<?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>74331</bug_id>
          
          <creation_ts>2011-12-12 14:21:25 -0800</creation_ts>
          <short_desc>De-virtualize destructors</short_desc>
          <delta_ts>2011-12-16 11:22:54 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74332</dependson>
    
    <dependson>74333</dependson>
    
    <dependson>74335</dependson>
    
    <dependson>74336</dependson>
    
    <dependson>74338</dependson>
    
    <dependson>74339</dependson>
    
    <dependson>74341</dependson>
    
    <dependson>74342</dependson>
    
    <dependson>74347</dependson>
    
    <dependson>74348</dependson>
    
    <dependson>74349</dependson>
    
    <dependson>74350</dependson>
    
    <dependson>74353</dependson>
    
    <dependson>74355</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>abarth</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519456</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:21:25 -0800</bug_when>
    <thetext>In order to remove the virtual destructors, which are the last of the virtual functions, from the JSCell hierarchy, we need to add the ClassInfo pointer to the cell rather than to the structure because in order to be able to lazily call the static destroy() functions that will replace the virtual destructors, we need to be able to access the ClassInfo without the danger of the object&apos;s Structure being collected before the object itself.

This is a tracking bug for that effort.  Each of the patches will be put up individually for review, but they will all be landed together as one giant patch to avoid any performance regressions (I also only verified that each patch would build on 64-bit Mac, and later went back and stabilized the other platforms).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520396</commentid>
    <comment_count>1</comment_count>
      <attachid>119091</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-13 15:02:46 -0800</bug_when>
    <thetext>Created attachment 119091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520492</commentid>
    <comment_count>2</comment_count>
      <attachid>119112</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-13 17:02:17 -0800</bug_when>
    <thetext>Created attachment 119112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520497</commentid>
    <comment_count>3</comment_count>
      <attachid>119112</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-13 17:04:59 -0800</bug_when>
    <thetext>Comment on attachment 119112
Patch

This patch is obviously more than just de-virtualizing destructors.  Destructors were the last virtual function in the JSCell hierarchy, so their removal caused a cascade of other necessary changes to be done in the same patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520502</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 17:08:26 -0800</bug_when>
    <thetext>Attachment 119112 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/JavaScriptCore/API/JS...&quot; exit_code: 1

Source/JavaScriptCore/jit/JITOpcodes.cpp:52:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:55:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 144 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>520526</commentid>
    <comment_count>5</comment_count>
      <attachid>119112</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-13 17:41:20 -0800</bug_when>
    <thetext>Comment on attachment 119112
Patch

Attachment 119112 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10876038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520554</commentid>
    <comment_count>6</comment_count>
      <attachid>119112</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-13 18:06:54 -0800</bug_when>
    <thetext>Comment on attachment 119112
Patch

Attachment 119112 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10876045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520596</commentid>
    <comment_count>7</comment_count>
      <attachid>119112</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-13 18:54:21 -0800</bug_when>
    <thetext>Comment on attachment 119112
Patch

Attachment 119112 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10873050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520705</commentid>
    <comment_count>8</comment_count>
      <attachid>119112</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-12-13 23:11:39 -0800</bug_when>
    <thetext>Comment on attachment 119112
Patch

Attachment 119112 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10875113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521126</commentid>
    <comment_count>9</comment_count>
      <attachid>119263</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-14 11:28:56 -0800</bug_when>
    <thetext>Created attachment 119263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521132</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 11:32:27 -0800</bug_when>
    <thetext>Attachment 119263 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/JavaScriptCore/API/JS...&quot; exit_code: 1

Source/JavaScriptCore/jit/JITOpcodes.cpp:52:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:55:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 152 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>521140</commentid>
    <comment_count>11</comment_count>
      <attachid>119263</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-14 11:39:07 -0800</bug_when>
    <thetext>Comment on attachment 119263
Patch

Since I&apos;ve already reviewed the sub-patches, r=me if it builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521152</commentid>
    <comment_count>12</comment_count>
      <attachid>119263</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-14 11:45:54 -0800</bug_when>
    <thetext>Comment on attachment 119263
Patch

Attachment 119263 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10872346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521173</commentid>
    <comment_count>13</comment_count>
      <attachid>119263</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-14 12:20:46 -0800</bug_when>
    <thetext>Comment on attachment 119263
Patch

Attachment 119263 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10872357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521223</commentid>
    <comment_count>14</comment_count>
      <attachid>119263</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-14 13:08:42 -0800</bug_when>
    <thetext>Comment on attachment 119263
Patch

Attachment 119263 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10873360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521370</commentid>
    <comment_count>15</comment_count>
      <attachid>119263</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-14 15:38:10 -0800</bug_when>
    <thetext>Comment on attachment 119263
Patch

Attachment 119263 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10870456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521418</commentid>
    <comment_count>16</comment_count>
      <attachid>119317</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-14 16:11:51 -0800</bug_when>
    <thetext>Created attachment 119317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521427</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 16:16:44 -0800</bug_when>
    <thetext>Attachment 119317 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/JavaScriptCore/API/JS...&quot; exit_code: 1

Source/JavaScriptCore/jit/JITOpcodes.cpp:52:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:55:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 152 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>521478</commentid>
    <comment_count>18</comment_count>
      <attachid>119317</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-14 16:56:00 -0800</bug_when>
    <thetext>Comment on attachment 119317
Patch

Attachment 119317 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10905021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521637</commentid>
    <comment_count>19</comment_count>
      <attachid>119371</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-14 21:27:56 -0800</bug_when>
    <thetext>Created attachment 119371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521638</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 21:30:30 -0800</bug_when>
    <thetext>Attachment 119371 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/JavaScriptCore/API/JS...&quot; exit_code: 1

Source/JavaScriptCore/jit/JITOpcodes.cpp:52:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:55:  string_failureCases2 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 152 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>522435</commentid>
    <comment_count>21</comment_count>
      <attachid>119371</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-15 18:47:11 -0800</bug_when>
    <thetext>Comment on attachment 119371
Patch

r=me if it builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522476</commentid>
    <comment_count>22</comment_count>
      <attachid>119371</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 20:21:20 -0800</bug_when>
    <thetext>Comment on attachment 119371
Patch

Rejecting attachment 119371 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
/Netscape/JSNPMethod.cpp
patching file Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp
patching file Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h
patching file Source/WebKit2/win/WebKit2.def
patching file Source/WebKit2/win/WebKit2CFLite.def
patching file Source/autotools/symbols.filter
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Geoffrey Garen&apos;, u&apos;--f...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10914511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522856</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-16 11:13:08 -0800</bug_when>
    <thetext>Committed r103083: &lt;http://trac.webkit.org/changeset/103083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522864</commentid>
    <comment_count>24</comment_count>
      <attachid>119639</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-16 11:22:54 -0800</bug_when>
    <thetext>Created attachment 119639
Bencher results

Performance results for this patch.  Mostly a wash, small win on kraken.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119091</attachid>
            <date>2011-12-13 15:02:46 -0800</date>
            <delta_ts>2011-12-13 17:02:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74331-20111213150245.patch</filename>
            <type>text/plain</type>
            <size>284838</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NGRmNDdhNjIyODNkYjY1M2Q2ZTlhODc2OWE3MDRjMjM4NTA1ZWU3Li4zYThjYTEwYWNlOGZhNmEy
YzM2YjI0Yjk3ZTkwNzE4ZTA1YjhhZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjIgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZWdhcGF0Y2gg
d2hpY2ggZnJlZXMgdXMgZnJvbSB0aGUgY2hhaW5zIG9mIHZpcnR1YWwgZGVzdHJ1Y3RvcnMuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3JzLCB3aGlj
aCBhcmUgdGhlIGxhc3Qgb2YgdGhlIHZpcnR1YWwgCisgICAgICAgIGZ1bmN0aW9ucywgZnJvbSB0
aGUgSlNDZWxsIGhpZXJhcmNoeSwgd2UgbmVlZCB0byBhZGQgdGhlIENsYXNzSW5mbyBwb2ludGVy
IHRvIAorICAgICAgICB0aGUgY2VsbCByYXRoZXIgdGhhbiB0byB0aGUgc3RydWN0dXJlIGJlY2F1
c2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBsYXppbHkgY2FsbCAKKyAgICAgICAgdGhlIHN0YXRp
YyBkZXN0cm95KCkgZnVuY3Rpb25zIHRoYXQgd2lsbCByZXBsYWNlIHRoZSB2aXJ0dWFsIGRlc3Ry
dWN0b3JzLCB3ZSAKKyAgICAgICAgbmVlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgQ2xhc3NJ
bmZvIHdpdGhvdXQgdGhlIGRhbmdlciBvZiB0aGUgb2JqZWN0J3MgCisgICAgICAgIFN0cnVjdHVy
ZSBiZWluZyBjb2xsZWN0ZWQgYmVmb3JlIHRoZSBvYmplY3QgaXRzZWxmLgorCisgICAgICAgIEFm
dGVyIGFkZGluZyB0aGUgQ2xhc3NJbmZvIHRvIHRoZSBjZWxsLCB3ZSBjYW4gdGhlbiBiZWdpbiB0
byByZW1vdmUgb3VyIHVzZSAKKyAgICAgICAgb2YgdnB0cnMgZm9yIG9wdGltaXphdGlvbnMgd2l0
aGluIHRoZSBKSVQgYW5kIHRoZSBHQy4gIFdoZW4gd2UgaGF2ZSByZW1vdmVkIAorICAgICAgICBh
bGwgb2YgdGhlIHN0b3JlZCB2cHRycyBmcm9tIEpTR2xvYmFsRGF0YSwgd2UgY2FuIHRoZW4gYWxz
byByZW1vdmUgYWxsIG9mIAorICAgICAgICB0aGUgcmVsYXRlZCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisKKyAgICAgICAgVGhlIHJlcGxhY2VtZW50IGZvciB2aXJ0dWFsIGRlc3RydWN0b3JzIHdp
bGwgYmUgdG8gYWRkIGEgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gCisgICAgICAgIHBvaW50ZXIg
dG8gdGhlIE1ldGhvZFRhYmxlIHN0b3JlZCBpbiBDbGFzc0luZm8uICBBbnkgc3ViY2xhc3Mgb2Yg
SlNDZWxsIHRoYXQgaGFzIAorICAgICAgICBhIG5vbi10cml2aWFsIGRlc3RydWN0b3Igd2lsbCBy
ZXF1aXJlIGl0cyBvd24gc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gdG8gc3RhdGljIAorICAgICAg
ICBjYWxsIGl0cyBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3IsIHdoaWNoIHdpbGwgbm93IGJlIG5v
bi12aXJ0dWFsLiAgSW4gZnV0dXJlIAorICAgICAgICBwYXRjaGVzIHdlIHdpbGwgc2xvd2x5IG1v
dmUgYXdheSBmcm9tIGRlc3RydWN0b3JzIGFsdG9nZXRoZXIgYXMgd2UgbWFrZSBtb3JlIGFuZCAK
KyAgICAgICAgbW9yZSBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnkgcmF0aGVyIHRoYW4gbWFs
bG9jLWVkIG1lbW9yeS4gIFRoZSBHQyB3aWxsIG5vdyAKKyAgICAgICAgY2FsbCB0aGUgc3RhdGlj
IGRlc3Ryb3kgbWV0aG9kIHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAg
ICAgICAgQXMgd2UgZ28gdGhyb3VnaCB0aGUgaGllcmFyY2h5IGFuZCBhZGQgc3RhdGljIGRlc3Ry
b3kgZnVuY3Rpb25zIHRvIGNsYXNzZXMsIAorICAgICAgICB3ZSB3aWxsIGFsc28gYWRkIGEgbmV3
IGFzc2VydCwgQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IsIHRvIHRob3NlIGNsYXNzZXMg
CisgICAgICAgIHRvIHdoaWNoIGl0IGFwcGxpZXMuICBUaGUgZnV0dXJlIGdvYWwgaXMgdG8gZXZl
bnR1YWxseSBoYXZlIGV2ZXJ5IGNsYXNzIGhhdmUgdGhhdCBhc3NlcnQuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Nv
bnN0cnVjdG9yOjpkZXN0cm95KTogQWRkIGEgZGVzdHJveSBmdW5jdGlvbiB0byBzdGF0aWNhbGx5
IGNhbGwgCisgICAgICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IgYmVjYXVzZSBpdCBoYXMgc29t
ZSBleHRyYSBkZXN0cnVjdGlvbiBsb2dpYy4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6IEFkZCB0cml2
aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBKU0NhbGxiYWNrRnVuY3Rpb24uCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOiBBZGQgYSBkZXN0cm95IGZ1bmN0aW9uIHRvIHN0YXRp
Y2FsbHkgY2FsbCB+SlNDYWxsYmFja09iamVjdCAKKyAgICAgICAgYmVjYXVzZSBpdCBoYXMgYSBt
ZW1iZXIgT3duUHRyIHRoYXQgbmVlZHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChKU0M6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6IEFkZC9yZW1vdmUgbmVjZXNzYXJ5IHN5bWJvbHMgZm9yIEpTQy4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmOiBTYW1lIGZvciBXaW5kb3dzIHN5bWJvbHMuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcDogRGVidWdnZXJBY3RpdmF0aW9uLCBmb3Igc29tZSBzdHJhbmdl
IHJlYXNvbiwgZGlkbid0IAorICAgICAgICBoYXZlIGl0cyBvd24gQ2xhc3NJbmZvIGRlc3BpdGUg
dGhlIGZhY3QgdGhhdCBpdCBvdmVycmlkZXMgYSBudW1iZXIgb2YgTWV0aG9kVGFibGUgCisgICAg
ICAgIG1ldGhvZHMuICBBZGRlZCB0aGUgQ2xhc3NJbmZvLCBhbG9uZyB3aXRoIGFuIGFzc2VydGlv
biB0aGF0IGl0cyBkZXN0cnVjdG9yIGlzIHRyaXZpYWwuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOiBSZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJndW1lbnQgdG8gaXNKU0FycmF5LCBpc0pTQnl0ZUFycmF5
LCAKKyAgICAgICAgaXNKU1N0cmluZywgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3Bw
OiAgRGl0dG8uICBBbHNvIHJlbW92ZSB1c2VzIG9mIGpzQXJyYXlWUHRyIGluIGZhdm9yIG9mIHVz
aW5nIHRoZSAKKyAgICAgICAgSlNBcnJheSBDbGFzc0luZm8gcG9pbnRlci4KKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6ICBSZXBsYWNlIHVzZXMgb2YgdGhlIG9sZCB2cHRycyB3aXRoIG5ldyBDbGFzc0luZm8g
CisgICAgICAgIGNvbXBhcmlzb25zIHNpbmNlIHdlIGRvbid0IGhhdmUgdnB0cnMgYW55bW9yZS4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6IFJlbW92ZSBhbGwgdXNlcyBvZiB2cHRycyBpbiBHQyBvcHRpbWl6YXRpb25zIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCAKKyAgICAgICAgQ2xhc3NJbmZvIGNvbXBhcmlzb25zLgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFp
bik6CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IERpdHRvLgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOiBEaXR0by4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9y
Lmg6IERpdHRvLgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IpOgorICAg
ICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uY3BwOiBOb3cgdGhhdCB3ZSBkb24ndCBoYXZlIHZw
dHJzLCB3ZSBjYW4ndCBjb3VudCB0aGVtLiAgCisgICAgICAgIFdlJ2xsIGhhdmUgdG8gcmVuYW1l
IHRoaXMgY2xhc3MgYW5kIG1ha2UgaXQgdXNlIENsYXNzSW5mbyBwdHJzIGluIGEgZnV0dXJlIHBh
dGNoLgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6Y291bnQpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDogUmVtb3ZlIGFsbCBnbG9iYWwgZGF0YSBhcmd1bWVu
dHMgZnJvbSBpc0pTQXJyYXksIAorICAgICAgICBldGMuIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpT
Qzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6IFJlbW92ZSB2cHRyIGFyZ3VtZW50IGZyb20gZW1pdEFsbG9jYXRlQmFz
aWNKU09iamVjdCAKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOiBSZW1vdmUgdnB0
ciBwbGFudGluZywgYW5kIGFkZCBDbGFzc0luZm8gcGxhbnRpbmcsIAorICAgICAgICByZW1vdmUg
YWxsIHZ0YWJsZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgYnJhbmNoIGNvZGUgd2l0aCBjb3Jy
ZXNwb25kaW5nIENsYXNzSW5mby4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmlt
aXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9l
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6IFJlbW92ZSBnbG9iYWwgZGF0YSBhcmd1bWVudCBm
cm9tIGlzSlNTdHJpbmcsIGV0Yy4KKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICog
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgc3R1ZmYgd2l0
aCBDbGFzc0luZm8gc3R1ZmYuCisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6Omxv
YWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDogUmVtb3ZlIGdsb2JhbCBkYXRhIGFyZ3VtZW50IGZyb20gaXNKU0Fy
cmF5LgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQb3Ap
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1NoaWZ0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY0ZpbHRlcik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTWFwKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNFdmVyeSk6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jRm9yRWFjaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29tZSk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmVkdWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZWR1Y2VSaWdodCk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Jv
b2xlYW5PYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOiBBZGQgZGVzdHJv
eSBmdW5jdGlvbiBwb2ludGVyIHRvIE1ldGhvZFRhYmxlLgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAg
ICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOiBBZGQgZGVzdHJveSBmdW5jdGlvbiBmb3IgRGF0
ZUluc3RhbmNlIGJlY2F1c2UgaXQgaGFzIGEgUmVmUHRyIAorICAgICAgICB0aGF0IG5lZWRzIGRl
c3RydWN0aW9uLgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6
IERpdHRvIChiZWNhdXNlIG9mIFVTdHJpbmcgbWVtYmVyKS4KKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Lmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwg
ZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDogQWRkIGRlc3Ryb3kgZnVuY3Rpb25zIGZv
ciBFeGVjdXRhYmxlQmFzZSBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChK
U0M6OkV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1
dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ry
b3kpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0Lgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBEaXR0by4gQWxzbyByZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJnIGZyb20gaXNKU0FycmF5LgorICAgICAgICAoSlNDOjpm
dW5jdGlvblByb3RvRnVuY0FwcGx5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5j
cHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6IFJl
bW92ZSBjYWxsIHRvIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyBzaW5jZSBpdCBubyAKKyAgICAg
ICAgbG9uZ2VyIGV4aXN0cy4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZ09uY2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6IFJlbW92ZSB2dGFibGVB
bmNob3IgZnVuY3Rpb24sIGFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LCAKKyAgICAgICAg
cmVtb3ZlIGZpcnN0IGFyZyBmcm9tIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2suCisgICAgICAgICogcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBjYWxsIH5KU0FycmF5
LiAgUmVwbGFjZSB2cHRyIGNoZWNrcyBpbiAKKyAgICAgICAgZGVzdHJ1Y3RvciB3aXRoIENsYXNz
SW5mbyBjaGVja3MuCisgICAgICAgIChKU0M6OkpTQXJyYXk6On5KU0FycmF5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6IFJl
bW92ZSBWUHRyU3RlYWxpbmdIYWNrLiAgUmVtb3ZlIGdsb2JhbERhdGEgYXJndW1lbnQgZnJvbSBp
c0pTQXJyYXkgCisgICAgICAgIGFuZCBjaGFuZ2UgdGhlbSB0byBjaGVjayB0aGUgQ2xhc3NJbmZv
IHJhdGhlciB0aGFuIHRoZSB2cHRycy4KKyAgICAgICAgKEpTQzo6aXNKU0FycmF5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBh
c3NlcnQuIFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkuCisgICAgICAgIChKU0M6OmJv
dW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBm
dW5jdGlvbiwgcmVwbGFjZSB2cHRyIGNoZWNrcyB3aXRoIENsYXNzSW5mbyBjaGVja3MuCisgICAg
ICAgIChKU0M6OkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpKU0J5
dGVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBSZW1v
dmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLgorICAgICAgICAoSlNDOjppc0pTQnl0ZUFycmF5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNz
ZXJ0LiAgQWRkIHN0YXRpYyBkZXN0cm95IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6IFJlbW92ZSBWUHRyU3RlYWxp
bmdIYWNrIGNvZGUuICBBZGQgZnVuY3Rpb24gZm9yIHJldHVybmluZyB0aGUgb2Zmc2V0IAorICAg
ICAgICBvZiB0aGUgQ2xhc3NJbmZvIHBvaW50ZXIgaW4gdGhlIG9iamVjdCBmb3IgdXNlIGJ5IHRo
ZSBKSVQuICBBZGQgdGhlIENsYXNzSW5mbyBwb2ludGVyIHRvIAorICAgICAgICB0aGUgSlNDZWxs
IGl0c2VsZiwgYW5kIGdyYWIgaXQgZnJvbSB0aGUgU3RydWN0dXJlLiAgUmVtb3ZlIHRoZSB2cHRy
IGFuZCBzZXRWUHRyIGZ1bmN0aW9ucywgCisgICAgICAgIGFzIHRoZXkgYXJlIG5vIGxvbmdlciB1
c2VkLiAgQWRkIGEgdmFsaWRhdGVkQ2xhc3NJbmZvIGZ1bmN0aW9uIHRvIEpTQ2VsbCBmb3IgYW55
IGNsaWVudHMgCisgICAgICAgIHRoYXQgd2FudCB0byB2ZXJpZnksIHdoaWxlIGluIERlYnVnIG1v
ZGUsIHRoYXQgdGhlIENsYXNzSW5mbyBjb250YWluZWQgaW4gdGhlIGNlbGwgaXMgdGhlIAorICAg
ICAgICBzYW1lIG9uZSBhcyB0aGF0IGNvbnRhaW5lZCBpbiB0aGUgU3RydWN0dXJlLiAgVGhpcyBp
c24ndCB1c2VkIHRvbyBvZnRlbiwgYmVjYXVzZSBtb3N0IG9mIAorICAgICAgICB0aGUgcGxhY2Vz
IHdoZXJlIHdlIGNvbXBhcmUgdGhlIENsYXNzSW5mbyB0byB0aGluZ3MgY2FuIGJlIGNhbGxlZCBk
dXJpbmcgZGVzdHJ1Y3Rpb24uICAKKyAgICAgICAgU2luY2UgdGhlIFN0cnVjdHVyZSBpcyB1bnJl
bGlhYmxlIGR1cmluZyB0aGUgcGhhc2Ugd2hlbiBkZXN0cnVjdG9ycyBhcmUgYmVpbmcgY2FsbGVk
LCAKKyAgICAgICAgd2UgY2FuJ3QgY2FsbCB2YWxpZGF0ZWRDbGFzc0luZm8uCisgICAgICAgIChK
U0M6OkpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2sgY29kZS4gIEFkZCBz
dGF0aWMgZGVzdHJveSwgcmVtb3ZlIHZ0YWJsZUFuY2hvciwgCisgICAgICAgIHJlbW92ZSBmaXJz
dCBhcmcgZnJvbSBjYWxsIHRvIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6IAorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcDogUmVtb3ZlIGFsbCBWUHRyIHN0ZWFsaW5nIGNvZGUgYW5kIHN0b3JhZ2UsIGluY2x1
ZGluZyBzdG9yZVZQdHJzLCAKKyAgICAgICAgYXMgdGhlc2UgdnB0cnMgYXJlIG5vIGxvbmdlciBu
ZWVkZWQgaW4gdGhlIGNvZGViYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlEZXNjcmlwdG9yOjpUeXBlZEFycmF5RGVzY3JpcHRv
cik6IENoYW5nZWQgdGhlIFR5cGVkQXJyYXlEZXNjcmlwdG9yIHRvIHVzZSAKKyAgICAgICAgQ2xh
c3NJbmZvIHJhdGhlciB0aGFuIHRoZSB2cHRyLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwOiBBZGQgdHJpdmlhbCBkZXN0
cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOiBEaXR0by4gUmVtb3ZlIGZpcnN0
IGFyZyBmcm9tIGlzSlNBcnJheSBjYWxscy4KKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDogCisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIEpTT2JqZWN0LCBy
ZW1vdmUgdnRhYmxlQW5jaG9yIAorICAgICAgICBmcm9tIEpTTm9uRmluYWxPYmplY3QgYW5kIEpT
RmluYWxPYmplY3QsIGFkZCBzdGF0aWMgZGVzdHJveSBmb3IgSlNGaW5hbE9iamVjdCBhbmQgCisg
ICAgICAgIEpTTm9uRmluYWxPYmplY3QsIGFkZCBpc0pTRmluYWxPYmplY3QgdXRpbGl0eSBmdW5j
dGlvbiBzaW1pbGFyIHRvIGlzSlNBcnJheSwgcmVtb3ZlIGFsbCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTTm9uRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjppc0pTRmluYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6IEFkZCBz
dGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChK
U0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oOiBEaXR0by4gCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6IERpdHRvLiBSZW1vdmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLiBBbHNvIHJl
bW92ZSBmaXh1cFZQdHIgY29kZSwgCisgICAgICAgIHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRv
IGZpeHVwIHZwdHJzLgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6
anNOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmcpOgorICAgICAgICAo
SlNDOjpqc1N1YnN0cmluZzgpOgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAg
IChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZ0J1aWxkZXIpOgor
ICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuY3BwOiAKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1l
L01hdGhPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOiBSZW1vdmUgY2FsbHMgdG8gZml4dXBWUHRyLCByZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNT
dHJpbmcuCisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToK
KyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDog
QWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlc3Ryb3kpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBmb3IgUmVnRXhwQ29uc3RydWN0b3IgYW5kIFJl
Z0V4cE1hdGNoZXNBcnJheS4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDogQWRk
IHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlc3Ryb3kpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29w
ZUNoYWluLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDogRGl0dG8uIFJlbW92ZSB2dGFibGVB
bmNob3IuCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6IE1vdmUgSlNDZWxsOjpmaW5p
c2hDcmVhdGlvbiBhbmQgSlNDZWxsIGNvbnN0cnVjdG9yIGludG8gU3RydWN0dXJlLmggCisgICAg
ICAgIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdGhlIGZ1bGwgU3RydWN0dXJlIHR5cGUgdG8g
YWNjZXNzIHRoZSBDbGFzc0luZm8gdG8gc3RvcmUgaW4gdGhlIEpTQ2VsbC4KKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
ZENsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBBZGQgbmV3IGFzc2VydGlvbiBBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUiwgd2hpY2ggdXNlcyBjbGFuZ3MgCisgICAgICAgIGFiaWxpdHkgdG8gdGVs
bCB1cyB3aGVuIGEgY2xhc3MgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBXZSB3aWxsIHVzZSB0
aGlzIGFzc2VydCAKKyAgICAgICAgbW9yZSBpbiBmdXR1cmUgcGF0Y2hlcyBhcyB3ZSBtb3ZlIHRv
d2FyZCBoYXZpbmcgYWxsIEpTQyBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnksIAorICAgICAg
ICB3aGljaCBtZWFucyBtb3ZpbmcgYXdheSBmcm9tIHVzaW5nIGRlc3RydWN0b3JzL2ZpbmFsaXpl
cnMuCisKIDIwMTEtMTItMTIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRWxpbWluYXRlIER1cGxpY2F0ZSB3b3JkIGF0IGEgdGltZSBlcXVhbCBjb2RlIGlu
IFN0cmluZ0ltcGwuY3BwIGFuZCBTdHJpbmdIYXNoLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmlu
ZGV4IGQzNmFiZWRkODRkMmJlYTgxMDFhNmQ1YTM4OWNlODhmNzg4ZDJmZTMuLjMzODBlOWQ5Yzg0
Nzc1YjcxNjM3YmY2NmZlYTc5MzcyOTExOTRlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDExLTEyLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAu
Y3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChVc2VyT2JqZWN0SW1w
OjpkZXN0cm95KToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisKIDIwMTEtMTItMDIgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBXVEYgY2xh
c3MgZnJvbSBUZW1wb3JhcmlseUNoYW5nZSB0byBUZW1wb3JhcnlDaGFuZ2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZmM3YzQ0Yjc1YjA5YmQ4ODY2MDA0NTEwNDZjYzI2MGI2NDI0ZGQ3ZS4uNGMyYmJjYWE3MDdh
OThlNGM5ZDIyZjViMjAwNTdiYWE1OTdhMDM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBA
CisyMDExLTEyLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgRG9pbmcg
ZXZlcnl0aGluZyBoZXJlIHRoYXQgd2FzIGRvbmUgdG8gdGhlIEpTQ2VsbCBoaWVyYXJjaHkgaW4g
SmF2YVNjcmlwdENvcmUuIAorICAgICAgICBTZWUgdGhlIENoYW5nZUxvZyBmb3IgdGhpcyBjb21t
aXQgZm9yIGEgbW9yZSBpbi1kZXB0aCBkZXNjcmlwdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOiBBZGQvcmVtb3ZlIHN5bWJvbHMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBSZW1vdmUgZmlyc3QgYXJnIGZyb20gaXNK
U0FycmF5IGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0V2Via2l0TGluZURhc2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0IAorICAgICAgICBhbmQgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kuICBB
ZGQgaW1wbGVtZW50YXRpb24gZm9yIAorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0IHRo
YXQgZGlzcGF0Y2hlcyB0byBkaWZmZXJlbnQgZnVuY3Rpb25zIGluIHN1YmNsYXNzZXMgCisgICAg
ICAgIGRlcGVuZGluZyBvbiBvdXIgY3VycmVudCBDbGFzc0luZm8uICBXZSBkbyB0aGlzIHNvIHRo
YXQgd2UgY2FuIGdldCByaWQgb2YgdGhlIAorICAgICAgICB2aXJ0dWFsLW5lc3Mgb2Ygc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgYmVjYXVzZSBhbnkgdmlydHVhbCBmdW5jdGlvbnMgd2lsbCB0aHJv
dyAKKyAgICAgICAgb2ZmIHRoZSBsYXlvdXQgb2YgdGhlIG9iamVjdCBhbmQgd2UnbGwgY3Jhc2gg
YXQgcnVudGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJv
eS4KKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZGVzdHJveSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6IERlLXZpcnR1YWxpemUgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNw
cDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVs
bDo6ZGVzdHJveSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3Ry
dWN0b3IgYXNzZXJ0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOiBBZGQg
YSBDbGFzc0luZm8gdG8gSlNET01XcmFwcGVyIHNpbmNlIGl0IG5vdyBvdmVycmlkZXMgCisgICAg
ICAgIGEgTWV0aG9kVGFibGUgZnVuY3Rpb24uIFJlbW92ZSB2dGFibGVBbmNob3IgdmlydHVhbCBm
dW5jdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOiBB
ZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwOiBDaGFuZ2UgaW1wbGVtZW50YXRpb24gb2YgcHVzaEV2ZW50SGFuZGxlclNj
b3BlIHNvIHRoYXQgCisgICAgICAgIGl0IGRpc3BhdGNoZXMgdG8gdGhlIGNvcnJlY3QgZnVuY3Rp
b24gZGVwZW5kaW5nIG9uIHRoZSAKKyAgICAgICAgaWRlbnRpdHkgb2YgdGhlIGNsYXNzIGFzIHNw
ZWNpZmllZCBieSB0aGUgQ2xhc3NJbmZvLiAgCisgICAgICAgIFNlZSBKU0RPTUdsb2JhbE9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBmb3IgZXhwbGFuYXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXZWJTb2NrZXRDdXN0b20uY3BwOiBSZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNBcnJheSBj
YWxsLgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNXZWJTb2NrZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2Uu
Y3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRl
eHRCYXNlOjpkZXN0cm95KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmg6IAorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDogUmVtb3ZlIGZp
cnN0IGFyZyB0byBpc0pTQXJyYXkgY2FsbC4KKyAgICAgICAgKFdlYkNvcmU6OmpzVG9JbnNwZWN0
b3JWYWx1ZSk6IAorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjppc0FycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Z2V0U3BhcnNlSW5kZXgpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOiBSZW1vdmUgdmlydHVhbC1uZXNzIG9mIGFueSBjdXN0b20gcHVzaEV2ZW50
SGFuZGxlclNjb3BlIChzZWUgCisgICAgICAgIEpTTm9kZUN1c3RvbTo6cHVzaEV2ZW50SGFuZGxl
clNjb3BlIGZvciBleHBsYW5hdGlvbikuICBSZW1vdmUgdmlydHVhbCB0b0Jvb2xlYW4gCisgICAg
ICAgIGZvciBhbnlib2R5IHdobyBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQsIHNpbmNlIG91ciBK
U09iamVjdCBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIAorICAgICAgICB0aGlzIGJhc2VkIG9uIHRo
ZSBUeXBlSW5mbyBpbiB0aGUgU3RydWN0dXJlLiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2Vy
dCBmb3IgYW55IAorICAgICAgICBjbGFzcyBvdGhlciB0aGFuIERPTVdpbmRvdyBvciBXb3JrZXJD
b250ZXh0cy4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBDaGFuZ2UgQ2xhc3NJ
bmZvIGRlZmluaXRpb25zIHRvIHVzZSBCYXNlOjpzX2luZm8sIHNpbmNlIAorICAgICAgICB0eXBp
bmcgdGhlIHBhcmVudCBjbGFzcyBtb3JlIHRoYW4gb25jZSBpcyBkdXBsaWNhdGlvbiBvZiBpbmZv
cm1hdGlvbiBhbmQgaW5jcmVhc2VzIAorICAgICAgICB0aGUgbGlrZWxpaG9vZCBvZiBtaXN0YWtl
cy4gIFBhc3MgQ2xhc3NJbmZvIHRvIFR5cGVBcnJheURlc2NyaXB0b3JzIGluc3RlYWQgb2YgdnB0
ci4gCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IEFkZCB0cml2aWFs
IGRlc3RydWN0b3IgYXNzZXJ0IGZvciBhbGwgZ2VuZXJhdGVkIGNvbnN0cnVjdG9ycy4KKyAgICAg
ICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHA6IFJlbW92ZSBlbXB0eSB2aXJ0dWFsIGRl
c3RydWN0b3IuCisgICAgICAgICogYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaDogCisgICAgICAg
ICogYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBicmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oOiAKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9PYmpDUnVudGltZU9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9P
YmpDUnVudGltZU9iamVjdC5tbToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aDogQWRkIHN0YXRpYyBkZXN0cm95IGZvciBPYmpjRmFsbGJhY2tPYmplY3RJbXAuIERlLXZpcnR1
YWxpemUgCisgICAgICAgIHRvQm9vbGVhbiBpbiB0aGUgc2hvcnQgdGVybS4gIE5lZWQgbG9uZ2Vy
IHRlcm0gZml4LgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVzdHJveSk6CisgICAg
ICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgdG8gUXRS
dW50aW1lTWV0aG9kLgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0aG9kOjpk
ZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOiBEZS12aXJ0dWFsaXpl
IH5RdFJ1bnRpbWVNZXRob2QuCisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOiBE
ZS12aXJ0dWFsaXplIGRlc3RydWN0b3IuIEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpT
Qzo6UnVudGltZUFycmF5OjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJh
eS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6IFJlbW92ZSB2dGFibGVB
bmNob3IuIEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6
ZGVzdHJveSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgICogYnJpZGdl
L3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTEtMTItMTIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3
ZWJraXQub3JnPgogCiAgICAgICAgIENTUyAyLjEgZmFpbHVyZTogZW9mLTAwMi5odG0gZmFpbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCAxN2VjN2I4ZDlkY2QzYmJjZTg1NTRmNmRlMmJmYzZkOWU2Yjkz
MDE5Li5mZWM3YTY4YjQzYzEzMGE4MGZmZjk2OGY4MTI1YzQzNDExYzA3MWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6IFJlbW92ZSBlbXB0eSB2aXJ0dWFsIGRlc3Ry
dWN0b3IuCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tOgor
CiAyMDExLTEyLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFdlYktpdCBjb2RlIHNob3VsZG4ndCBiZSBjYWxsaW5nIGFwcGx5Q29tbWFuZCBkaXJlY3RseQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGJmYjAzNjBjODYzYzBkM2E5Mjc1YWRlYmQxNjM1NmJlZTk2NWNkZDkuLjM2
YzMyZjdjNjA5NWI0MjZjZTkyZDM5NjUyYzQyMDFiMGZjNzFjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMS0xMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIERlLXZpcnR1YWxpemUgZGVzdHJ1Y3RvcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE1ldGhvZC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0Lgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDogQWRk
IHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZXN0cm95KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAg
ICAgICAqIHdpbi9XZWJLaXQyLmRlZjogQWRkL3JlbW92ZSBuZWNlc3Nhcnkgc3ltYm9scy4KKyAg
ICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6IERpdHRvLgorCiAyMDExLTEyLTEzICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgW1F0XVtXSzJdIE1ha2UgUXRQYWdlQ2xpZW50IGRpc3BhdGNoIGRpcmVjdGx5
IHRvIFdlYlZpZXcgd2hlbiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCmluZGV4IGI2MDFmM2VjYTM0ZGU1YjAwMzcz
MDA3NjNlNmFiMjU3YmQxNGI0MTEuLjEzNDllNGYzZjhiN2Y1Y2QyMTNjYWEyYzgyZDUyOWZjYmFh
N2FhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDYgKzU5LDExIEBAIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6
fkpTQ2FsbGJhY2tDb25zdHJ1Y3RvcigpCiAgICAgICAgIEpTQ2xhc3NSZWxlYXNlKG1fY2xhc3Mp
OwogfQogCit2b2lkIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAganNDYXN0PEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcio+KGNlbGwpLT5KU0NhbGxiYWNr
Q29uc3RydWN0b3I6On5KU0NhbGxiYWNrQ29uc3RydWN0b3IoKTsKK30KKwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNDYWxsYmFjayhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAppbmRl
eCBiMzIwYTkwMWM5MDQzY2ZkMDc4MjcxMWI1MzJkODM4NzZlYjgyYjkwLi40M2E3M2MzMTQzNzI2
ODU4MzQzOGFlY2Q4ZGJiNWVjNzNkYTBiODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwg
fkpTQ2FsbGJhY2tDb25zdHJ1Y3RvcigpOworICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IoKTsK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NS
ZWYoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzOyB9CiAgICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1
Y3RvckNhbGxiYWNrIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjazsgfQogICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IGRkMTA2Y2NlZjIzZGJjN2Q1ZTAz
ZmRhZDQ3ODlhYjk2OWQxZDNiNmMuLjNmYmMwMDQ3MDYyZTE3MWEwOTMxNzI5NDkxMzYxZWY4NjVm
YTkwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tGdW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxf
REVTVFJVQ1RPUihKU0NhbGxiYWNrRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSlNDYWxs
YmFja0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVu
Y3Rpb246OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrRnVuY3Rp
b24pIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
Y3BwCmluZGV4IGZiOWQ3MzAyOWM2MzAyMGI4Nzk1YjlhZmZmMTc4NWIzYWNmZWE1NmEuLmVmOWNi
OTI1YzA5MDQxMTcyNTYxYWU2NDg5ODJhYjA1NTg1NTVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU3Ry
dWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CiAKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Cit2
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKS0+SlNDYWxsYmFja09iamVjdDo6fkpT
Q2FsbGJhY2tPYmplY3QoKTsKK30KKwogdm9pZCBKU0NhbGxiYWNrT2JqZWN0RGF0YTo6ZmluYWxp
emUoSGFuZGxlPFVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU0NsYXNz
UmVmIGpzQ2xhc3MgPSBzdGF0aWNfY2FzdDxKU0NsYXNzUmVmPihjb250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggOTFmZjYyNDlkZGZm
OTEwZmE1YzJiMTM1Y2RkNWY2MjhkMWIyMmIxNS4uYTUxZWQzZTAxZGViOGVkZDIxNjA5NGEwMDgy
NDI4M2FmMzc3Y2VhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgKQEAgLTE3Nyw2ICsxNzcsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0
YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogCisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjdlOTM2NDhmZGJh
NzUzZjk5YWQ1ZDU2ZjcyM2RjODc0ZmNiOGY5MS4uMmU0Y2UwMmU1YWNkZmQ5NGE0MTAzYTY5NDRl
ZDAzMGVhYzYzODQwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CkBAIC0xMjUsNiArMTI1LDcgQEAgX19aTjNKU0MxMUpTQnl0ZUFycmF5MjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS04KIF9fWk4zSlNDMTFK
U0J5dGVBcnJheTI1Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleEVQTlNfNkpTQ2VsbEVQTlNfOUV4
ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxMUpTQnl0ZUFycmF5M3B1dEVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVS
TlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXk2c19pbmZvRQorX19a
TjNKU0MxMUpTQnl0ZUFycmF5N2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzExSlNCeXRl
QXJyYXlDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQog
X19aTjNKU0MxMVBhcnNlckFyZW5hNXJlc2V0RXYKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwU291cmNlQ29kZUVQTlNfN0pTVmFsdWVFCkBAIC0xMzQsMTMgKzEz
NSwxMCBAQCBfX1pOM0pTQzEyRGF0ZUluc3RhbmNlMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0ds
b2JhbERhdGFFZAogX19aTjNKU0MxMkRhdGVJbnN0YW5jZTZzX2luZm9FCiBfX1pOM0pTQzEyRGF0
ZUluc3RhbmNlQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTBDbGllbnREYXRhRDJFdgotX19aTjNKU0MxMkpTR2xvYmFsRGF0YTExanNBcnJh
eVZQdHJFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRFTlNfMTVUaHJlYWRT
dGFja1R5cGVFTlNfOEhlYXBTaXplRQotX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEyanNTdHJpbmdW
UHRyRQogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEyc3RvcFNhbXBsaW5nRXYKIF9fWk4zSlNDMTJK
U0dsb2JhbERhdGExM3N0YXJ0U2FtcGxpbmdFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0ZHVt
cFNhbXBsZURhdGFFUE5TXzlFeGVjU3RhdGVFCi1fX1pOM0pTQzEySlNHbG9iYWxEYXRhMTRqc0Z1
bmN0aW9uVlB0ckUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNHJlc2V0RGF0ZUNhY2hlRXYKIF9f
Wk4zSlNDMTJKU0dsb2JhbERhdGExNHNoYXJlZEluc3RhbmNlRXYKIF9fWk4zSlNDMTJKU0dsb2Jh
bERhdGExNWR1bXBSZWdFeHBUcmFjZUV2CkBAIC0xNzgsNiArMTc2LDcgQEAgX19aTjNKU0MxNEpT
R2xvYmFsT2JqZWN0MjVzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlRQogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxP
YmplY3Q0aW5pdEVQTlNfOEpTT2JqZWN0RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0NnNfaW5m
b0UKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNK
U0MxNEpTR2xvYmFsT2JqZWN0RDJFdgogX19aTjNKU0MxNE1hY2hpbmVUaHJlYWRzMTZhZGRDdXJy
ZW50VGhyZWFkRXYKIF9fWk4zSlNDMTRNYXJrU3RhY2tBcnJheTZleHBhbmRFdgpAQCAtMTk0LDE0
ICsxOTMsMTUgQEAgX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVAKIF9fWk4zSlNDMTVXZWFrSGFuZGxl
T3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vh
a0hhbmRsZU93bmVyRDJFdgogX19aTjNKU0MxNWNyZWF0ZVR5cGVFcnJvckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzdVU3RyaW5nRQotX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb24xMnZ0YWJsZUFuY2hv
ckV2CiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNH
bG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240
bmFtZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNnNfaW5mb0UK
IF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlT
dHJ1Y3R1cmVFCitfX1pOM0pTQzE2SlNOb25GaW5hbE9iamVjdDdkZXN0cm95RVBOU182SlNDZWxs
RQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVP
YmplY3QxNHN5bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVz
Y3JpcHRvckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVz
RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNf
MTVFbnVtZXJhdGlvbk1vZGVFCitfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDdkZXN0cm95RVBO
U182SlNDZWxsRQogX19aTjNKU0MxNmNyZWF0ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktO
U183VVN0cmluZ0UKIF9fWk4zSlNDMTZzbG93VmFsaWRhdGVDZWxsRVBOU18xNEpTR2xvYmFsT2Jq
ZWN0RQogX19aTjNKU0MxNnNsb3dWYWxpZGF0ZUNlbGxFUE5TXzZKU0NlbGxFCkBAIC0yMTEsNiAr
MjExLDcgQEAgX19aTjNKU0MxN0pTQVBJVmFsdWVXcmFwcGVyNnNfaW5mb0UKIF9fWk4zSlNDMTdQ
cm9wZXJ0eU5hbWVBcnJheTNhZGRFUE4zV1RGMTBTdHJpbmdJbXBsRQogX19aTjNKU0MxN2NyZWF0
ZVN5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzE4RGVi
dWdnZXJBY3RpdmF0aW9uMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzhK
U09iamVjdEUKK19fWk4zSlNDMThEZWJ1Z2dlckFjdGl2YXRpb242c19pbmZvRQogX19aTjNKU0Mx
OERlYnVnZ2VyQWN0aXZhdGlvbkMxRVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDMThQcm9w
ZXJ0eURlc2NyaXB0b3IxMXNldFdyaXRhYmxlRWIKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0
b3IxMnNldFVuZGVmaW5lZEV2CkBAIC0yNjUsNiArMjY2LDcgQEAgX19aTjNKU0M0WWFycjlpbnRl
cnByZXRFUE5TMF8xNUJ5dGVjb2RlUGF0dGVybkVSS05TXzdVU3RyaW5nRWpqUGkKIF9fWk4zSlND
NGNhbGxFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFTlNfOENhbGxUeXBlRVJLTlNfOENhbGxE
YXRhRVMyX1JLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9S
TlNfOENhbGxEYXRhRQogX19aTjNKU0M2SlNDZWxsMTZnZXRDb25zdHJ1Y3REYXRhRVBTMF9STlNf
MTNDb25zdHJ1Y3REYXRhRQorX19aTjNKU0M2SlNDZWxsN2Rlc3Ryb3lFUFMwXwogX19aTjNKU0M2
SlNDZWxsOWdldE9iamVjdEV2CiBfX1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRU5TXzE0
SlNMb2NrQmVoYXZpb3JFCiBfX1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRVBOU185RXhl
Y1N0YXRlRQpAQCAtMjc2LDEzICsyNzgsMTMgQEAgX19aTjNKU0M2SlNMb2NrOWxvY2tDb3VudEV2
CiBfX1pOM0pTQzZKU0xvY2tDMUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDNlJlZ0V4cDVtYXRj
aEVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmluZ0VpUE4zV1RGNlZlY3RvcklpTG0zMkVF
RQogX19aTjNKU0M2UmVnRXhwNmNyZWF0ZUVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmlu
Z0VOU18xMVJlZ0V4cEZsYWdzRQotX19aTjNKU0M2UmVnRXhwRDFFdgogX19aTjNKU0M3SlNBcnJh
eTEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlND
N0pTQXJyYXkxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDN0pT
QXJyYXkxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdBcmdMaXN0RQog
X19aTjNKU0M3SlNBcnJheTE1c2V0U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0FycmF5MjVn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNf
MTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzdKU0FycmF5NnNfaW5mb0UKK19fWk4zSlNDN0pTQXJy
YXk3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3RoRWoKIF9f
Wk4zSlNDN0pTQXJyYXlDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pO
M0pTQzdKU0FycmF5QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBOU185U3RydWN0dXJlRQpAQCAtMzEz
LDcgKzMxNSw2IEBAIF9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUFMwX1BOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVMxX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBH
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVj
dDEybG9va3VwU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNK
U0M4SlNPYmplY3QxMnRvVGhpc09iamVjdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUUKLV9f
Wk4zSlNDOEpTT2JqZWN0MTJ2dGFibGVBbmNob3JFdgogX19aTjNKU0M4SlNPYmplY3QxM3Zpc2l0
Q2hpbGRyZW5FUE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09iamVj
dDE0ZGVsZXRlUHJvcGVydHlFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVj
U3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCkBAIC0z
MzAsNiArMzMxLDcgQEAgX19aTjNKU0M4SlNPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckVQUzBfUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXIKIF9fWk4zSlNDOEpTT2JqZWN0
MjVnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpS
TlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzZKU0NlbGxFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVy
dHlTbG90RQogX19aTjNKU0M4SlNPYmplY3Q2c19pbmZvRQorX19aTjNKU0M4SlNPYmplY3Q3ZGVz
dHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOEpTT2JqZWN0OWNsYXNzTmFtZUVQS1MwXwogX19a
TjNKU0M4SlNTdHJpbmc2c19pbmZvRQogX19aTjNKU0M4UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdF
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKQEAgLTM1MCw3ICszNTIsNiBAQCBfX1pOM0pT
QzlTdHJ1Y3R1cmUzZ2V0RVJOU18xMkpTR2xvYmFsRGF0YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpS
UE5TXzZKU0NlbGxFCiBfX1pOM0pTQzlTdHJ1Y3R1cmU0MGFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmVFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQog
X19aTjNKU0M5U3RydWN0dXJlNnNfaW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUMxRVJOU18xMkpT
R2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOU183SlNWYWx1ZUVSS05TXzhUeXBlSW5m
b0VQS05TXzlDbGFzc0luZm9FCi1fX1pOM0pTQzlTdHJ1Y3R1cmVEMUV2CiBfX1pOM0pTQzljb25z
dHJ1Y3RFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFTlNfMTNDb25zdHJ1Y3RUeXBlRVJLTlNf
MTNDb25zdHJ1Y3REYXRhRVJLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQ2VxRVJLTlNfN1VTdHJpbmdF
UEtjCiBfX1pOM0pTQ2d0RVJLTlNfN1VTdHJpbmdFUzJfCkBAIC02MTksMTYgKzYyMCw3IEBAIF9f
Wk5LM1dURjZTdHJpbmc4dG9JbnRQdHJFUGIKIF9fWk5LM1dURjZTdHJpbmc4dG9VSW50NjRFUGIK
IF9fWk5LM1dURjZTdHJpbmc5c3Vic3RyaW5nRWpqCiBfX1pOSzNXVEY4Q29sbGF0b3I3Y29sbGF0
ZUVQS3RtUzJfbQotX19aVFZOM0pTQzEyU3RyaW5nT2JqZWN0RQotX19aVFZOM0pTQzEzSlNGaW5h
bE9iamVjdEUKLV9fWlRWTjNKU0MxNEpTR2xvYmFsT2JqZWN0RQotX19aVFZOM0pTQzE0U2NvcGVD
aGFpbk5vZGVFCi1fX1pUVk4zSlNDMTVKU1dyYXBwZXJPYmplY3RFCiBfX1pUVk4zSlNDMTVXZWFr
SGFuZGxlT3duZXJFCi1fX1pUVk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uRQotX19aVFZOM0pTQzE2
SlNWYXJpYWJsZU9iamVjdEUKIF9fWlRWTjNKU0M4RGVidWdnZXJFCi1fX1pUVk4zSlNDOEpTT2Jq
ZWN0RQotX19aVFZOM0pTQzhKU1N0cmluZ0UKIF9qc2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0
aW9uCiBfa0pTQ2xhc3NEZWZpbml0aW9uRW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggZmZkNWE1MjQ2YzU0MjY5YmZiMzQw
ZGMxYzQ1YmY0NThhMWI0Mzk4ZS4uZmM1MTZhYzIzMDA1NmZmMzg2ZTFmZTJkNmM2OGUwZDlkMWNj
MDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKQEAgLTMzLDExICszMyw5IEBAIEVYUE9SVFMKICAgICA/PzFEZWJ1Z2dlckBKU0NA
QFVBRUBYWgogICAgID8/MURyb3BBbGxMb2Nrc0BKU0xvY2tASlNDQEBRQUVAWFoKICAgICA/PzFK
U0dsb2JhbERhdGFASlNDQEBRQUVAWFoKLSAgICA/PzFKU0dsb2JhbE9iamVjdEBKU0NAQFVBRUBY
WgotICAgID8/MUpTVmFyaWFibGVPYmplY3RASlNDQEBVQUVAWFoKKyAgID8/MUpTR2xvYmFsT2Jq
ZWN0QEpTQ0BAUUFFQFhaCiAgICAgPz8xTXV0ZXhAV1RGQEBRQUVAWFoKICAgICA/PzFSZWZDb3Vu
dGVkTGVha0NvdW50ZXJAV1RGQEBRQUVAWFoKLSAgICA/PzFTY29wZUNoYWluTm9kZUBKU0NAQEVB
RUBYWgogICAgID8/MVNvdXJjZVByb3ZpZGVyQ2FjaGVASlNDQEBRQUVAWFoKICAgICA/PzFUaHJl
YWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICA/PzFXVEZUaHJlYWREYXRhQFdURkBAUUFFQFha
CkBAIC0xNTgsNiArMTU2LDkgQEAgRVhQT1JUUwogICAgID9kZXNwZWNpZnlEaWN0aW9uYXJ5RnVu
Y3Rpb25AU3RydWN0dXJlQEpTQ0BAUUFFWEFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJA
MkBAWgogICAgID9kZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0FQ
QVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVz
dHJveUBIZWFwQEpTQ0BAUUFFWFhaCisgICAgP2Rlc3Ryb3lASlNCeXRlQXJyYXlASlNDQEBTQVhQ
QVZKU0NlbGxAMkBAWgorICAgID9kZXN0cm95QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlND
ZWxsQDJAQFoKKyAgICA/ZGVzdHJveUBKU05vbkZpbmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxs
QDJAQFoKICAgICA/ZGV0YWNoQERlYnVnZ2VyQEpTQ0BAVUFFWFBBVkpTR2xvYmFsT2JqZWN0QDJA
QFoKICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgP2RpZFRpbWVPdXRAVGltZW91
dENoZWNrZXJASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEBaCkBAIC0zNjMsOSArMzY0LDYgQEAg
RVhQT1JUUwogICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlND
ZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsVGhp
c0BKU0NAQEtBWFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/dmlzaXRDaGls
ZHJlbkBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAg
ICA/dnRhYmxlQW5jaG9yQEludGVybmFsRnVuY3Rpb25ASlNDQEBFQUVYWFoKLSAgICA/dnRhYmxl
QW5jaG9yQEpTRmluYWxPYmplY3RASlNDQEBFQUVYWFoKLSAgICA/dnRhYmxlQW5jaG9yQEpTT2Jq
ZWN0QEpTQ0BAVUFFWFhaCiAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11
dGV4QDJAQFoKICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgog
ICAgID93cml0YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCmlu
ZGV4IDFlMDNjZDFmYTk2OWY3YTZhZTgxNDY4NTMxZThkYzk2Y2FkZmUzYWMuLjgwYmUzMTBiNTk1
MzA3OGM2ZmRiNmM1NDY4MjcyNWZjODI3OWUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC0zMCw2ICszMCwx
MCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
RGVidWdnZXJBY3RpdmF0aW9uKTsKKworY29uc3QgQ2xhc3NJbmZvIERlYnVnZ2VyQWN0aXZhdGlv
bjo6c19pbmZvID0geyAiRGVidWdnZXJBY3RpdmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShEZWJ1Z2dlckFjdGl2YXRpb24pIH07CisKIERlYnVnZ2VyQWN0
aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAg
ICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5kZWJ1Z2dlckFjdGl2
YXRpb25TdHJ1Y3R1cmUuZ2V0KCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggNDRkMDlhMTgwNzhjNGRmZTBmN2M3
MDNjYjJhNTc2MjFhMDk2MWE2NS4uNjhjYzNhMzFiMjE4ZTM4MGU2Y2NiZmVjZjMwYWM4MTFmMjUy
NmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckFjdGl2YXRpb24uaApAQCAtNTIsNiArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBz
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKKyAgICAgICAgc3RhdGljIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CisKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMzJlMzhlMWQ4OGFk
YzkwMTJhODdmYjdiMWI2OTE1M2RmMzYxZTU3Ny4uOWVkODVjOTI4OTEwODE1ZTRhNjI1OWZmMWM2
ZGJkNDkxOWQ4OTRjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LAogewogICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBp
ZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1
ZSk7CiAgICAgICAgIGlmIChhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXgpKSB7CiAgICAgICAgICAg
ICBhcnJheS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGluZGV4LCB2YWx1ZSk7CkBAIC0xNTUsNyAr
MTU1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVB
cnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpbmRleCkpIHsKKyAgICBpZiAoaXNKU0J5
dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0lu
ZGV4KGluZGV4KSkgewogICAgICAgICBKU0J5dGVBcnJheSogYnl0ZUFycmF5ID0gYXNCeXRlQXJy
YXkoYmFzZVZhbHVlKTsKICAgICAgICAgLy8gRklYTUU6IHRoZSBKSVRzdHViIHVzZWQgdG8gcmVs
aW5rIHRoaXMgdG8gYW4gb3B0aW1pemVkIGZvcm0hCiAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMy
KCkpIHsKQEAgLTI2OSwxOCArMjY5LDE2IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAKIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGJhc2UsIHVpbnQzMl90IGluZGV4KQogewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0KICAgICAvLyBGSVhNRTogdGhlIEpJVCB1c2VkIHRv
IGhhbmRsZSB0aGVzZSBpbiBjb21waWxlZCBjb2RlIQotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFs
RGF0YSwgYmFzZSkgJiYgYXNBcnJheShiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgIGlm
IChpc0pTQXJyYXkoYmFzZSkgJiYgYXNBcnJheShiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkoYmFzZSktPmdldEluZGV4KGlu
ZGV4KSk7CiAKICAgICAvLyBGSVhNRTogdGhlIEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0
byBhbiBvcHRpbWl6ZWQgZm9ybSEKLSAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNl
KSAmJiBhc1N0cmluZyhiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTU3Ry
aW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmcoYmFzZSktPmdldEluZGV4KGV4ZWMsIGlu
ZGV4KSk7CiAKICAgICAvLyBGSVhNRTogdGhlIEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0
byBhbiBvcHRpbWl6ZWQgZm9ybSEKLSAgICBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBi
YXNlKSAmJiBhc0J5dGVBcnJheShiYXNlKS0+Y2FuQWNjZXNzSW5kZXgoaW5kZXgpKQorICAgIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2UpICYmIGFzQnl0ZUFycmF5KGJhc2UpLT5jYW5BY2Nlc3NJbmRl
eChpbmRleCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCeXRlQXJyYXkoYmFz
ZSktPmdldEluZGV4KGV4ZWMsIGluZGV4KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoYmFzZSkuZ2V0KGV4ZWMsIGluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZXBhdGNoLmNwcAppbmRleCAyYjU2ODA4MDRhYzg5YTY4NWQwODVlMTdkODMxYjUzNDU4
ZmIxY2QxLi5jNDRlOGI3Mzg5MGNmYmZkN2ZiZWY2ODI4MzE0MWYzZGYwZmI4Mzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBz
dGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgY29uc3QgSWRlbnRpZmllcgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKICAgICAKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkg
JiYgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICBp
ZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxH
UFJSZWc+KHN0dWJJbmZvLmJhc2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
IEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnZhbHVl
VGFnR1BSKTsKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllcgogICAg
ICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAg
ICAgICAgCi0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7
CisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc2Ny
YXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IGQ5ZDg0ODU2MzVlNTZkMWNkZjk0NTMyYWRlZmQ2ZmViMmY3ZDg0MWEuLjEx
Y2NmNmIxYTlkZGNkOWFhODM3NjRhMTY0N2ZhMjU4NDA0MzJjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04MDIsNyArODAyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUm
IG5vZGUsIE5vZGVJbmRleCBicmFuY2hOb2QKICAgICAgICAgYWRkQnJhbmNoKG1faml0Lmp1bXAo
KSwgbm90VGFrZW4pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVP
YmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCB2b2lk
KiB2cHRyLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBOb2RlSW5k
ZXggYnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlv
bkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIE5vZGUmIGJyYW5jaE5vZGUgPSBhdChi
cmFuY2hOb2RlSW5kZXgpOwogICAgIEJsb2NrSW5kZXggdGFrZW4gPSBicmFuY2hOb2RlLnRha2Vu
QmxvY2tJbmRleCgpOwpAQCAtODI0LDkgKzgyNCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hO
CiAgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rp
b25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5m
bykpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUuY2hpbGQyKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBhZGRCcmFuY2gobV9qaXQu
YnJhbmNoUHRyKGNvbmRpdGlvbiwgb3AxR1BSLCBvcDJHUFIpLCB0YWtlbik7CiAgICAgaWYgKG5v
dFRha2VuICE9IChtX2Jsb2NrICsgMSkpCkBAIC04ODYsMTEgKzg4NiwxMSBAQCBib29sIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYgbm9kZSwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYQogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAg
ICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29t
cGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUuY2hpbGQx
KCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9i
amVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICAgICAg
Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCAmSlNG
aW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAgICAgICAgICAg
ICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDIoKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYgTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewotICAg
ICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUlu
ZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0FycmF5UHJlZGljdGlvbik7
CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hO
b2RlSW5kZXgsICZKU0FycmF5OjpzX2luZm8sIGlzQXJyYXlQcmVkaWN0aW9uKTsKICAgICAgICAg
ICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsK
ICAgICAgICAgfSBlbHNlCkBAIC0xMDY0LDEyICsxMDY0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2lu
Zm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
dGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRl
QXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7CkBAIC0xMDc5LDQyICsxMDc5LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3By
KCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCks
IEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlw
dG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0lu
Zm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGlj
dGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
MTZBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNVaW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigp
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2Ny
aXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1f
dnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJy
YXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGbG9h
dDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlw
dG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGlmIChpc0lu
dDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKQEAgLTExMjQsMTMgKzExMjQsMTMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5
cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRl
QXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9u
KHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklU
Q29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Qm9vbGVhblRhZykpKTsKICAgICAgICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CkBAIC0xMTM4LDQ5ICsxMTM4LDQ5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJh
eURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQx
NkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
LmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwog
ICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigp
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZv
KSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIo
KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOwogICAgICAgICB9ICBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlv
bihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2Ny
aXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNGbG9hdDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVh
bFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRv
cigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9h
dDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gICBlbHNlIGlm
IChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5
bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0
QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAg
ICAgfSAKICNlbmRpZgogICAgIH0KQEAgLTE0OTUsNyArMTQ5NSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHBy
b3BlcnR5LCBOCiAgICAgTm9kZUluZGV4IHZhbHVlSW5kZXggPSBub2RlLmNoaWxkMygpOwogICAg
IAogICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShiYXNlSW5k
ZXgpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2Up
LCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAg
ICBHUFJUZW1wb3JhcnkgdmFsdWU7CiAgICAgR1BSUmVnIHZhbHVlR1BSOwogCkBAIC0xNTg5LDcg
KzE1ODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0
aChjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzYwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgCiAgICAgaWYgKG5lZWRzU3BlY3VsYXRpb25DaGVjaykKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAKICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgZGVzY3JpcHRvci5tX2xl
bmd0aE9mZnNldCksIHJlc3VsdEdQUik7CiAgICAgCkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5
cGVkQXJyYXlEZXNjcmlwdG9yJgogICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGls
ZDMoKTsKICAgICAKICAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgR1BSVGVtcG9y
YXJ5IHZhbHVlOwogICAgIEdQUlJlZyB2YWx1ZUdQUjsKICAgICAKQEAgLTE3NzUsNyArMTc3NSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJh
eShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2
YWx1ZU9wKHRoaXMsIHZhbHVlSW5kZXgpOwogICAgIAogICAgIGlmIChzcGVjdWxhdGlvblJlcXVp
cmVtZW50cyAhPSBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrKQotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2UpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0
cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5m
bykpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIApAQCAtMjE1
Miw5ICsyMTUyLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICBlbHNlIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVOdW1iZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQy
KCkpKSkKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91YmxlQ29uZGl0aW9u
KTsKICAgICBlbHNlIGlmIChub2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVj
dWxhdGVGaW5hbE9iamVjdChhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKQot
ICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICBjb21w
aWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9i
amVjdFByZWRpY3Rpb24pOwogICAgIGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxk
MigpKSkpCi0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxE
YXRhKCktPmpzQXJyYXlWUHRyLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVP
YmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7
CiAgICAgZWxzZQogICAgICAgICBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZShub2Rl
LCBjb25kaXRpb24sIG9wZXJhdGlvbik7CiAgICAgCkBAIC0yMjg2LDI2ICsyMjg2LDI2IEBAIGJv
b2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlJiBub2RlKQogICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChhdChub2RlLmNoaWxkMSgpKSwgYXQobm9k
ZS5jaGlsZDIoKSkpKSB7CiAgICAgICAgIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXggPSBkZXRl
Y3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoTm9kZUluZGV4ICE9IE5vTm9k
ZSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJh
bmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCBpc0Zp
bmFsT2JqZWN0UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RF
cXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlz
RmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIG1fY29tcGlsZUlu
ZGV4ID0gYnJhbmNoTm9kZUluZGV4OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KLSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsIG1faml0Lmdsb2JhbERhdGEo
KS0+anNGaW5hbE9iamVjdFZQdHIsIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAg
Y29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlzRmlu
YWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAK
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSksIGF0
KG5vZGUuY2hpbGQyKCkpKSkgewogICAgICAgICBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaE5vZGVJbmRleCAhPSBO
b05vZGUpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUs
IGJyYW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgaXNBcnJh
eVByZWRpY3Rpb24pOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHko
bm9kZSwgYnJhbmNoTm9kZUluZGV4LCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlv
bik7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9k
ZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRl
eDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbXBpbGVP
YmplY3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0Fy
cmF5UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNB
cnJheTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCkBAIC0yMzMxLDcgKzIzMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlJiBub2RlKQogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0
cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc3RvcmFnZVJlZyk7CiAgICAgICAgIApAQCAtMjM0MSw1
MSArMjM0MSw1MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZShOb2RlJiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0b3Jh
Z2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRl
Qnl0ZUFycmF5KCkpIHsKICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNCeXRlQXJyYXk6
Om9mZnNldE9mU3RvcmFnZSgpKSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewogICAgICAgICBjb25zdCBU
eXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+aW50
OEFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzSW50OEFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihk
ZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBl
bHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsK
ICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5n
bG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNJbnQx
NkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihk
ZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3Rv
cmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCk7CiAg
ICAgICAgIGlmICghaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9z
dG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRB
cnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJy
YXlEZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNVaW50OEFycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNj
cmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZv
KSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNl
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CiAg
ICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xv
YmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc1VpbnQx
NkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihk
ZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3Rv
cmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVVaW50MzJBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKTsK
ICAgICAgICAgaWYgKCFpc1VpbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3Iu
bV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewogICAgICAgICBjb25zdCBU
eXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+Zmxv
YXQzMkFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzRmxvYXQzMkFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1f
Y2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAg
ICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJy
YXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9
IG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBp
ZiAoIWlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdl
T2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFpc0FycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNB
cnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgfQogICAgIHN0b3JhZ2VS
ZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFkNTEwNjQ5N2NiZDIxMDc3OTgyNzhl
NGY5ZWExY2UyNjM5MjRjZGEuLjZmZTliZmUzYjg4NmIyNjJkOTQ5YWY4NTBiZGIyNDZlNTgyMTEy
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
QEAgLTE5NTEsMTIgKzE5NTEsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXBpbGVQZWVwSG9s
ZUJyYW5jaChOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7CiAgICAgdm9p
ZCBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9k
ZUluZGV4LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21w
aWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgs
IEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwotICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
T2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIHZvaWQqIHZw
dHIsIFByZWRpY3Rpb25DaGVja2VyKTsKLSAgICB2b2lkIGNvbXBpbGVPYmplY3RFcXVhbGl0eShO
b2RlJiwgdm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZWNrZXIpOworICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNv
bnN0IENsYXNzSW5mbyosIFByZWRpY3Rpb25DaGVja2VyKTsKKyAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShOb2RlJiwgY29uc3QgQ2xhc3NJbmZvKiwgUHJlZGljdGlvbkNoZWNrZXIpOwog
ICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKE5vZGUmKTsKLSAgICB2b2lkIGNvbXBpbGVPYmplY3RP
ck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggdmFsdWUsIHZvaWQqIHZwdHIsIGJvb2wgbmVlZFNw
ZWN1bGF0aW9uQ2hlY2spOworICAgIHZvaWQgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KE5vZGVJbmRleCB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZvKiwgYm9vbCBuZWVkU3BlY3VsYXRpb25D
aGVjayk7CiAgICAgdm9pZCBjb21waWxlTG9naWNhbE5vdChOb2RlJik7Ci0gICAgdm9pZCBlbWl0
T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggdmFsdWUsIEJsb2NrSW5kZXggdGFrZW4sIEJs
b2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2sp
OworICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IHZhbHVlLCBCbG9j
a0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCBjb25zdCBDbGFzc0luZm8qLCBib29s
IG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKICAgICB2b2lkIGVtaXRCcmFuY2goTm9kZSYpOwogICAg
IAogICAgIHZvaWQgY29tcGlsZUludGVnZXJDb21wYXJlKE5vZGUmLCBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0yMDExLDggKzIwMTEsOCBAQCBwcml2YXRlOgogICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiksIHNj
cmF0Y2hHUFIpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCAmc2l6ZUNsYXNz
LT5maXJzdEZyZWVDZWxsKTsKICAgICAgICAgCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9i
amVjdCdzIHZ0YWJsZQotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSKSk7CisgICAgICAgIC8vIEluaXRpYWxpemUgdGhl
IG9iamVjdCdzIGNsYXNzSW5mbyBwb2ludGVyCisgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIGluaGVyaXRvcklE
LgogICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigw
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmhlcml0b3JJRCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2M2VkZjc0Njk5OTY2ZjE5NjdjOWUyMTY3YWRj
OGU0NWFiYmI0ZmUxLi5lZWU3YjBlMjk0NjlhZTZkMWQxYjUxMjcwOWRmYTkzYmFlNWIwNmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0
aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9wZXJhbmQmIG9wLCBGUFJSZWcgcmVzCiAg
ICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGVja2VyIHBy
ZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0
eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlvbkNoZWNr
ZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDIodGhpcywgbm9k
ZS5jaGlsZDIoKSk7CkBAIC0xNzIxLDkgKzE3MjEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCogdnB0ciwgUHJlZGljdGlvbkNo
ZQogICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAg
ICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQ
UiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgbV9qaXQubW92ZShJ
bW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSYgbm9kZSkKICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5kZXgp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3QoTm9kZUluZGV4IG5vZGVJbmRleCwgdm9pZCogdnB0ciwgYm9vbCBuZWVkU3BlY3VsYXRpb25D
aGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5v
dChOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9vbCBu
ZWVkU3BlY3VsYXRpb25DaGVjaykKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlSW5kZXgpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAtMTc5
Myw3ICsxNzkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJM
b2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5kZXgsIHZvaWQqIHYKICAgICAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAg
ICBpZiAobmVlZFNwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVQYXlsb2FkR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikp
KTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFs
dWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFz
c0luZm8pKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRH
UFIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAg
CkBAIC0xODIyLDExICsxODIyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dp
Y2FsTm90KE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7Ci0gICAg
ICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCBtX2ppdC5n
bG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAg
Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0ZpbmFsT2Jq
ZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewot
ICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgbV9q
aXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgIWlzQXJyYXlPck90aGVyUHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVP
YmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNBcnJheTo6c19pbmZvLCAh
aXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CkBAIC0xODcxLDcgKzE4NzEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQogICAgIGJvb2xl
YW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90
aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrZW4sIEJsb2NrSW5k
ZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCit2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggbm9kZUlu
ZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgYm9vbCBuZWVkU3BlY3VsYXRpb25DaGVjaykKIHsKICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlSW5kZXgpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwpAQCAtMTg4MSw3ICsxODgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWsKICAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKICAgICBpZiAobmVlZFNwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh2
YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBh
eWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgYWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgdGFr
ZW4pOwogICAgIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwpAQCAtMTkyMSw5ICsxOTIxLDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlJiBub2RlKQogCiAgICAgICAg
IG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGVtaXRP
YmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgbV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAg
IGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwg
JkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgfSBlbHNlIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewotICAgICAg
ICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4s
IG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0
T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0Fy
cmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgYm9vbCBpbnZlcnQgPSBm
YWxzZTsKQEAgLTIwODAsMTQgKzIwODAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIo
KTsKICAgICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAg
ICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgfSBlbHNlIGlmIChp
c0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBH
UFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNl
bGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7Cisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJh
eTo6c19pbmZvKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29t
cGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdCht
X2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewpAQCAtMjY4NSw3ICsyNjg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlUmVnID0g
YmFzZS5ncHIoKTsKICAgICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgICAg
ICB9CiAKQEAgLTI4MDQsNyArMjgwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQg
dGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQgd2l0aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVu
Z3RoKS4KICAgICAgICAgLy8gSWYgd2UgaGF2ZSBwcmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlw
ZSBhcnJheSwgd2UgY2FuIHNraXAgdGhlIGNoZWNrLgogICAgICAgICBpZiAoIWlzQXJyYXlQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAg
ICAgICBiYXNlLnVzZSgpOwogICAgICAgICBwcm9wZXJ0eS51c2UoKTsKQEAgLTI5NDgsNyArMjk0
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
d3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlVGFnR1BSLCBub2RlLmNoaWxkMigpLCBXcml0ZUJh
cnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUik7CiAK
ICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJy
YXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZK
U0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0
b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3Rv
cmFnZUxlbmd0aEdQUik7CkBAIC0yOTk0LDcgKzI5OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0g
c3RvcmFnZUxlbmd0aC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAg
ICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRP
RihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzE1Niw3
ICszMTU2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGFscmVhZHlQcmltaXRpdmU7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKLSAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMVBheWxvYWRHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0VGFn
R1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVG9QcmltaXRpdmUsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgb3AxVGFnR1BS
LCBvcDFQYXlsb2FkR1BSKTsKQEAgLTMyNzcsNyArMzI3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghaXNPYmplY3RQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwodGhpc1Zh
bHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSKSwgSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFs
dWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3Vs
dEdQUik7CiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgp
OwpAQCAtMzMyMiw3ICszMzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAvLyBkbyB0aGUgc2xvdyAoc3RydWN0dXJlLWJhc2VkKSBjaGVjay4K
ICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0
KCkpIHsKICAgICAgICAgICAgIGlmICghaXNGaW5hbE9iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChwcm90b0dQUiksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHByb3RvR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cikpKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHByb3RvR1BSKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSkp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOwogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaDgoTWFjcm9B
c3NlbWJsZXI6OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihPYmplY3RUeXBlKSkpOwpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0
b3JhZ2VPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2Us
IG1fbGVuZ3RoKSksIHJlc3VsdEdQUik7CkBAIC0zNTEzLDcgKzM1MTMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzU3RyaW5nUHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAg
CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CiAKQEAgLTM1MjksNyArMzUy
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICgh
aXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRy
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVB
cnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkp
LCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCA0YmYzM2I5OTgwOTNlNWZmZGRkOGQ4NmFjMTJmYjMwOTdjNDU5N2VjLi5lZjZmNjMxMzg5YTI2
NDAwYTE4ZmFhMjE2MjhhMjQ1ZDY2OTZmYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE3MzcsNyArMTczNyw3IEBAIEpJ
VENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZh
bHVlLCBGUFJSZWcgcmVzdWx0LCBHCiAgICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZw
dHIsIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CkBAIC0xNzQ4LDkgKzE3NDgsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwg
dm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgCiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJl
Z3Mob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1Zh
bHVlUmVncyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0lu
Zm8pKSk7CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQyKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3Mob3Ay
R1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVn
cyhvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFsc2VDYXNlID0gbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxR1BSLCBvcDJHUFIpOwogICAgIG1faml0
Lm1vdmUoSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKQEAgLTE4MDgsNyArMTgwOCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlJiBub2RlKQogICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9k
ZUluZGV4LCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2Rl
SW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBib29sIG5lZWRTcGVjdWxhdGlvbkNo
ZWNrKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVJbmRleCk7CiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTE4MTcsNyArMTgxNyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9k
ZUluZGV4LCB2b2lkICp2CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRy
KSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlc3VsdEdQ
Uik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAK
QEAgLTE4NDgsMTEgKzE4NDgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2lj
YWxOb3QoTm9kZSYgbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkpIHsKLSAgICAg
ICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksIG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBj
b21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTRmluYWxPYmpl
Y3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7Ci0g
ICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCBtX2pp
dC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZU9i
amVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0FycmF5OjpzX2luZm8sICFp
c0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKQEAgLTE5MTIsNyArMTkxMiw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUmIG5vZGUpCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRh
a2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlv
bkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9k
ZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRleCBub3RUYWtlbiwg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7
CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2Nr
SW5kZXggdGFrCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykKLSAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBhZGRCcmFuY2gobV9qaXQu
anVtcCgpLCB0YWtlbik7CiAgICAgCiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC0xOTYx
LDkgKzE5NjEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUmIG5vZGUp
CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBlbHNl
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIo
KSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtl
biwgbm90VGFrZW4sIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFpc0Zp
bmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgp
LCB0YWtlbiwgbm90VGFrZW4sICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0
T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlP
ck90aGVyKCkpIHsKLSAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEo
KSwgdGFrZW4sIG5vdFRha2VuLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAhaXNB
cnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKTsKKyAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFr
ZW4sIG5vdFRha2VuLCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2UgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAg
ICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CkBAIC0yMTEzLDE0ICsyMTEzLDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcg
Y2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQ
UiwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICBu
b1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQ
cmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGNlbGxH
UFIgPSBjZWxsLmdwcigpOwogICAgICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxH
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlUHRy
KGNlbGxHUFIsIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAg
ICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9v
bGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKQEAgLTI2ODgsNyArMjY4OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
UmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAog
ICAgICAgICAvLyBGSVhNRTogSW4gY2FzZXMgd2hlcmUgdGhlcmUgYXJlIHN1YnNlcXVlbnQgYnlf
dmFsIGFjY2Vzc2VzIHRvIHRoZSBzYW1lIGJhc2UgaXQgbWlnaHQgaGVscCB0byBjYWNoZQpAQCAt
Mjc5OSw3ICsyNzk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFuZCB0aGF0IHByb3Bl
cnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JMZW5ndGgpLgogICAg
ICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0eXBlIGFycmF5LCB3
ZSBjYW4gc2tpcCB0aGUgY2hlY2suCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJl
Z3MoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6
c19pbmZvKSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHByb3BlcnR5LnVzZSgp
OwpAQCAtMjk0Myw3ICsyOTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIG5vZGUuY2hp
bGQyKCksIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzdG9yYWdlR1BSLCBzdG9yYWdl
TGVuZ3RoR1BSKTsKIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJh
eVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykp
KTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CiAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsK
QEAgLTI5ODYsNyArMjk4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICAgICAgR1BSUmVnIHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdw
cigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJy
YXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8p
KSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JK
RUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3RvcmFnZUxlbmd0aEdQUik7
CkBAIC0zMTI5LDcgKzMxMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgYWxyZWFkeVByaW1p
dGl2ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBw
ZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2
ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvUHJpbWl0aXZlLCByZXN1bHRHUFIsIG9w
MUdQUik7CkBAIC0zMjM5LDcgKzMyMzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWlzT2JqZWN0UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRo
aXNWYWx1ZUdQUiksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3Ry
aW5nOjpzX2luZm8pKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0Lm1vdmUodGhp
c1ZhbHVlR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgCkBAIC0zMjgzLDcgKzMyODMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIGRv
IHRoZSBzbG93IChzdHJ1Y3R1cmUtYmFzZWQpIGNoZWNrLgogICAgICAgICBpZiAoYXQobm9kZS5j
aGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSkgewogICAgICAgICAgICAgaWYg
KCFpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHBy
b3RvR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9HUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyKSkp
OworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MocHJvdG9HUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8pKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoOChN
YWNyb0Fzc2VtYmxlcjo6QmVsb3csIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKE9iamVjdFR5cGUpKSk7CkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6
OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgcmVzdWx0R1BSKTsK
QEAgLTM0NjUsNyArMzQ2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
CiAgICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgICAg
ICAKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKIApAQCAtMzQ4MSw3ICsz
NDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYg
KCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
Qnl0ZUFycmF5OjpvZmZzZXRPZlN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBCeXRlQXJyYXk6Om9mZnNl
dE9mU2l6ZSgpKSwgcmVzdWx0R1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5k
ZXggMDZjMGFmZGQzZWY0ZDEwODIxYjEwNmJjMjNiNzNiYWYxYTA2NzZjMC4uNjFlYmEwOGE0OWM2
NmZlOTIzNjNjNTA3YTYzMTljOTdkOGM3MTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgSGVhcFNpemUgaGVhcFNpemUpCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJhY2soRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9tYWNoaW5lVGhyZWFk
cyh0aGlzKQogICAgICwgbV9zaGFyZWREYXRhKGdsb2JhbERhdGEpCi0gICAgLCBtX3Nsb3RWaXNp
dG9yKG1fc2hhcmVkRGF0YSwgZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIsIGdsb2JhbERhdGEtPmpz
RmluYWxPYmplY3RWUHRyLCBnbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpCisgICAgLCBtX3Nsb3RW
aXNpdG9yKG1fc2hhcmVkRGF0YSkKICAgICAsIG1faGFuZGxlSGVhcChnbG9iYWxEYXRhKQogICAg
ICwgbV9pc1NhZmVUb0NvbGxlY3QoZmFsc2UpCiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IDNmNGZkYTc2
Y2M0ZTM3MWY3NGQ2ZGNjNzM1YzliOTM4NDYzZWY5ZDUuLjI4OWM1NDEyZjk1MTliMDEyZmI3N2Qx
NjQ5ZmVhNGVmY2ZlM2JkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgTWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNl
bGxzRnJvbShNYXJrU3RhY2tBcnJheSYgb3RoZXIpCiB2b2lkIE1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGE6Om1hcmtpbmdUaHJlYWRNYWluKCkKIHsKICAgICBXVEY6OnJlZ2lzdGVyR0NUaHJlYWQo
KTsKLSAgICBTbG90VmlzaXRvciBzbG90VmlzaXRvcigqdGhpcywgbV9nbG9iYWxEYXRhLT5qc0Fy
cmF5VlB0ciwgbV9nbG9iYWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciwgbV9nbG9iYWxEYXRhLT5q
c1N0cmluZ1ZQdHIpOworICAgIFNsb3RWaXNpdG9yIHNsb3RWaXNpdG9yKCp0aGlzKTsKICAgICBQ
YXJhbGxlbE1vZGVFbmFibGVyIGVuYWJsZXIoc2xvdFZpc2l0b3IpOwogICAgIHNsb3RWaXNpdG9y
LmRyYWluRnJvbVNoYXJlZChTbG90VmlzaXRvcjo6U2xhdmVEcmFpbik7CiB9CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYgY29uc2Vy
dmF0aXZlUm9vdHMpCiAgICAgICAgIGludGVybmFsQXBwZW5kKHJvb3RzW2ldKTsKIH0KIAotQUxX
QVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
LCBjb25zdCBKU0NlbGwqIGNlbGwsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc0Fy
cmF5VlB0ciwgdm9pZCoganNTdHJpbmdWUHRyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBKU0NlbGwqIGNlbGwpCiB7
CiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKICAgICBtX3Zpc2l0ZWRUeXBlQ291
bnRzLmNvdW50KGNlbGwpOwpAQCAtMzAyLDE3ICszMDIsMTcgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBKU0NlbGwq
IGNlbGwKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CiAKLSAgICBpZiAoY2Vs
bC0+dnB0cigpID09IGpzU3RyaW5nVlB0cikgeworICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7
CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2Vs
bCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNlbGwtPnZw
dHIoKSA9PSBqc0ZpbmFsT2JqZWN0VlB0cikgeworICAgIGlmIChpc0pTRmluYWxPYmplY3QoY2Vs
bCkpIHsKICAgICAgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwq
PihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY2Vs
bC0+dnB0cigpID09IGpzQXJyYXlWUHRyKSB7CisgICAgaWYgKGlzSlNBcnJheShjZWxsKSkgewog
ICAgICAgICBKU0FycmF5Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCks
IHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzM4LDE2ICszMzgsMTIgQEAg
dm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogewogICAgIEFTU0VSVChtX2lzSW5QYXJhbGxlbE1v
ZGUpOwogICAgIAotICAgIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyID0gbV9qc0ZpbmFsT2JqZWN0
VlB0cjsKLSAgICB2b2lkKiBqc0FycmF5VlB0ciA9IG1fanNBcnJheVZQdHI7Ci0gICAgdm9pZCog
anNTdHJpbmdWUHRyID0gbV9qc1N0cmluZ1ZQdHI7Ci0KICNpZiBFTkFCTEUoUEFSQUxMRUxfR0Mp
CiAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID4gMSkgewogICAgICAgICB3
aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3N0YWNrLnJlZmlsbCgp
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBIZXVyaXN0aWNzOjptaW5p
bXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2FuUmVtb3ZlTGFzdCgp
ICYmIGNvdW50ZG93bi0tOykKLSAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBt
X3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpzQXJyYXlWUHRyLCBqc1N0
cmluZ1ZQdHIpOworICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2su
cmVtb3ZlTGFzdCgpKTsKICAgICAgICAgICAgIGRvbmF0ZUtub3duUGFyYWxsZWwoKTsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTM1OSw3ICszNTUsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFp
bigpCiAgICAgd2hpbGUgKCFtX3N0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0YWNrLnJl
ZmlsbCgpOwogICAgICAgICB3aGlsZSAobV9zdGFjay5jYW5SZW1vdmVMYXN0KCkpCi0gICAgICAg
ICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9i
amVjdFZQdHIsIGpzQXJyYXlWUHRyLCBqc1N0cmluZ1ZQdHIpOworICAgICAgICAgICAgdmlzaXRD
aGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVMYXN0KCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAppbmRleCBjNTA4MDE5NDg4NzAxOWM5YThjZDQ4
YjM3Mzc3NmQ4YThmOTc4ZGE3Li4wM2RlZWFiODc5YmQyMTI3M2ZiMDFiNGQ3MzgxNGU5YTEyMGNi
ZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaApAQCAtMjA0LDcgKzIw
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNp
dG9yOyAvLyBBbGxvd2VkIHRvIG1hcmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3RseS4K
IAogICAgIHB1YmxpYzoKLSAgICAgICAgTWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERh
dGEmLCB2b2lkKiBqc0FycmF5VlB0ciwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpz
U3RyaW5nVlB0cik7CisgICAgICAgIE1hcmtTdGFjayhNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRh
Jik7CiAgICAgICAgIH5NYXJrU3RhY2soKTsKIAogICAgICAgICB2b2lkIGFwcGVuZChDb25zZXJ2
YXRpdmVSb290cyYpOwpAQCAtMjY3LDkgKzI2Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBNYXJrU3RhY2tBcnJheSBtX3N0YWNrOwotICAgICAgICB2
b2lkKiBtX2pzQXJyYXlWUHRyOwotICAgICAgICB2b2lkKiBtX2pzRmluYWxPYmplY3RWUHRyOwot
ICAgICAgICB2b2lkKiBtX2pzU3RyaW5nVlB0cjsKICAgICAgICAgSGFzaFNldDx2b2lkKj4gbV9v
cGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90IHZpc2libGUg
dG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgogICAgICAgICAKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CkBAIC0yODYsMTEgKzI4Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tU
aHJlYWRTaGFyZWREYXRhJiBtX3NoYXJlZDsKICAgICB9OwogCi0gICAgaW5saW5lIE1hcmtTdGFj
azo6TWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmIHNoYXJlZCwgdm9pZCoganNB
cnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc1N0cmluZ1ZQdHIpCisg
ICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEm
IHNoYXJlZCkKICAgICAgICAgOiBtX3N0YWNrKHNoYXJlZC5tX3NlZ21lbnRBbGxvY2F0b3IpCi0g
ICAgICAgICwgbV9qc0FycmF5VlB0cihqc0FycmF5VlB0cikKLSAgICAgICAgLCBtX2pzRmluYWxP
YmplY3RWUHRyKGpzRmluYWxPYmplY3RWUHRyKQotICAgICAgICAsIG1fanNTdHJpbmdWUHRyKGpz
U3RyaW5nVlB0cikKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICwgbV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24oZmFsc2UpCiAgICAgICAgICwgbV9pc0RyYWluaW5nKGZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IGQ2
ZmI4NTNhMWM5MDQ2YWYyNzM5NDdjZTg1YTFmMzVkNTdkMDc2ZjcuLmYyNTI5ZmQ0ZWZkNDQ1N2Yw
MzIxM2Q3ZDRmNWY3ODViNjY4ZWViMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5jcHAKQEAgLTYwLDE4ICs2MCwxNyBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxv
Y2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBz
aQogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiB9CiAKLWlubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwsIHZvaWQqIGpz
RmluYWxPYmplY3RWUHRyKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9y
KEpTQ2VsbCogY2VsbCkKIHsKICAgICAvLyBBIHByZXZpb3VzIGVhZ2VyIHN3ZWVwIG1heSBhbHJl
YWR5IGhhdmUgcnVuIGNlbGwncyBkZXN0cnVjdG9yLgogICAgIGlmIChjZWxsLT5pc1phcHBlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICB2b2lkKiB2cHRyID0gY2VsbC0+dnB0cigpOwogI2lm
IEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCiAgICAgbV9oZWFwLT5tX2Rlc3Ryb3llZFR5
cGVDb3VudHMuY291bnRWUHRyKHZwdHIpOwogI2VuZGlmCi0gICAgaWYgKHZwdHIgIT0ganNGaW5h
bE9iamVjdFZQdHIpCi0gICAgICAgIGNlbGwtPn5KU0NlbGwoKTsKKyAgICBpZiAoY2VsbC0+Y2xh
c3NJbmZvKCkgIT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKKyAgICAgICAgY2VsbC0+bWV0aG9k
VGFibGUoKS0+ZGVzdHJveShjZWxsKTsKIAogICAgIGNlbGwtPnphcCgpOwogfQpAQCAtODUsNyAr
ODQsNiBAQCBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIE1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3
ZWVwKCkKICAgICAvLyBUaGlzIGlzIGZpbmUsIHNpbmNlIHRoZSBhbGxvY2F0aW9uIGNvZGUgbWFr
ZXMgbm8gYXNzdW1wdGlvbnMgYWJvdXQgdGhlCiAgICAgLy8gb3JkZXIgb2YgdGhlIGZyZWUgbGlz
dC4KICAgICBGcmVlQ2VsbCogaGVhZCA9IDA7Ci0gICAgdm9pZCoganNGaW5hbE9iamVjdFZQdHIg
PSBtX2hlYXAtPmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHI7CiAgICAgZm9yIChzaXpl
X3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7
CiAgICAgICAgIGlmIChibG9ja1N0YXRlID09IE1hcmtlZCAmJiBtX21hcmtzLmdldChpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTUsNyArOTMsNyBAQCBNYXJrZWRCbG9jazo6RnJlZUNl
bGwqIE1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVwKCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmIChibG9ja1N0YXRlICE9IE5ldykKLSAgICAgICAgICAgIGNhbGxEZXN0
cnVjdG9yKGNlbGwsIGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgICAgIGNhbGxEZXN0cnVj
dG9yKGNlbGwpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7
CiAgICAgICAgICAgICBGcmVlQ2VsbCogZnJlZUNlbGwgPSByZWludGVycHJldF9jYXN0PEZyZWVD
ZWxsKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRl
eCBhZGM2NTcyNjQyMDcxYWYzZTcxN2NhYjZjOGFmZmNmZWNmYjM3NzRhLi44YzY2NWRkNWJlZDVi
MjQxM2RkMzAyMTdmZjc0ZTQwMDdhZjFjOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVf
dCBjZWxsU2l6ZSk7CiAgICAgICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIHNpemVfdCBhdG9t
TnVtYmVyKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwq
LCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CisgICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3Io
SlNDZWxsKik7CiAgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZT4gRnJlZUNl
bGwqIHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKEdHQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCmluZGV4IGE0NjE3ODE0YWU3ZTJmNjhh
YjMyNDg5ZWU5ZWNlYTVhZWI4YzY2MTIuLmJiMzAxZmJmMTljODU1MzQ3Zjk4ZmY5Y2MzM2QxMTMz
NDRjZDM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBIZWFwOwogY2xhc3MgU2xvdFZpc2l0b3IgOiBwdWJsaWMgTWFy
a1N0YWNrIHsKICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogcHVibGljOgotICAg
IFNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmLCB2b2lkKiBqc0FycmF5VlB0
ciwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0cik7CisgICAgU2xv
dFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYpOwogCiAgICAgdm9pZCBkb25hdGUo
KQogICAgIHsKQEAgLTcxLDggKzcxLDggQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1pbmxpbmUg
U2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmIHNoYXJl
ZCwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc1N0
cmluZ1ZQdHIpCi0gICAgOiBNYXJrU3RhY2soc2hhcmVkLCBqc0FycmF5VlB0ciwganNGaW5hbE9i
amVjdFZQdHIsIGpzU3RyaW5nVlB0cikKK2lubGluZSBTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3Io
TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkKQorICAgIDogTWFya1N0YWNrKHNoYXJl
ZCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxl
U3BlY3RydW0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0u
Y3BwCmluZGV4IGI5OGQxYTUxMTc1ODc2MGUwNjBhZGQ3ZTkxNTRiMjkxZGJlZmFiMTQuLmFjYjQ5
NDAzNGZhOGJkNzdkMDIyNzcxMTc0N2JlMDUzZGNlMTE1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAKQEAgLTU0LDcgKzU0LDggQEAgdm9pZCBW
VGFibGVTcGVjdHJ1bTo6Y291bnRWUHRyKHZvaWQqIHZUYWJsZVBvaW50ZXIpCiAKIHZvaWQgVlRh
YmxlU3BlY3RydW06OmNvdW50KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBjb3VudFZQdHIoY2VsbC0+
dnB0cigpKTsKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBjaGFuZ2UgdGhpcyBjbGFzcyB0byBj
b3VudCBDbGFzc0luZm9zIHJhdGhlciB0aGFuIHZwdHJzCisgICAgVU5VU0VEX1BBUkFNKGNlbGwp
OwogfQogCiB2b2lkIFZUYWJsZVNwZWN0cnVtOjpkdW1wKEZJTEUqIG91dHB1dCwgY29uc3QgY2hh
ciogY29tbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IGJhZmI1YTc1MWZiODY5NGRjZGNmM2NiNWI0MjRiYzBlMGRmMzgx
YmQuLjExZDU0ZGZhNTk4NmMxYWI2ZGU0NTg1NmRjNDc5NTRiMDRlNjFiMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTA2
LDcgKzUwNiw3IEBAIENhbGxGcmFtZSogbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiBuZXdD
YWxsRnJhbWU7CiAgICAgfQogCi0gICAgaWYgKGlzSlNBcnJheSgmY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIGFyZ3VtZW50cykpIHsKKyAgICBpZiAoaXNKU0FycmF5KGFyZ3VtZW50cykpIHsKICAg
ICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGFyZ3VtZW50cyk7CiAgICAgICAgIHVuc2ln
bmVkIGFyZ0NvdW50ID0gYXJyYXktPmxlbmd0aCgpOwogICAgICAgICBDYWxsRnJhbWUqIG5ld0Nh
bGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJz
dEZyZWVSZWdpc3RlciArIGFyZ0NvdW50ICsgMSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSk7CkBAIC0xNTA4LDEzICsxNTA4LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVy
cHJldGVyOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEs
IGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCkgeworICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUg
PT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHZQQ1swXSA9
IGdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlO
YW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChpc0pT
U3RyaW5nKGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X3N0cmlu
Z19sZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzIxOCw3ICszMjE3LDcgQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpbnQgYmFzZSA9IHZQQ1syXS51Lm9wZXJh
bmQ7CiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFs
dWUoKTsKLSAgICAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVl
KSkpIHsKKyAgICAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkoYmFzZVZhbHVlKSkpIHsKICAgICAg
ICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcihhc0FycmF5KGJhc2VWYWx1ZSktPmxlbmd0aCgp
KTsKICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9hcnJheV9sZW5ndGgp
OwpAQCAtMzI0Miw3ICszMjQxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBp
bnQgYmFzZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
Y2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKExJS0VMWShpc0pTU3Ry
aW5nKGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpKSB7CisgICAgICAgIGlmIChMSUtFTFkoaXNKU1N0
cmluZyhiYXNlVmFsdWUpKSkgewogICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmxlbmd0aCgpKTsKICAgICAgICAgICAgIHZQQyArPSBPUENPREVf
TEVOR1RIKG9wX2dldF9zdHJpbmdfbGVuZ3RoKTsKQEAgLTM1MTEsMTUgKzM1MTAsMTUgQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSkgewogICAgICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwot
ICAgICAgICAgICAgaWYgKGlzSlNBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAg
ICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0Fy
cmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChq
c0FycmF5LT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNB
cnJheS0+Z2V0SW5kZXgoaSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBqc0FycmF5LT5KU0FycmF5OjpnZXQoY2FsbEZyYW1lLCBpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0
SW5kZXgoY2FsbEZyYW1lLCBpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSlNCeXRlQXJyYXko
Z2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nl
c3NJbmRleChpKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVl
KSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChjYWxsRnJh
bWUsIGkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJhc2VW
YWx1ZS5nZXQoY2FsbEZyYW1lLCBpKTsKQEAgLTM1NTMsMTMgKzM1NTIsMTMgQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKIAogICAgICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkg
ewogICAgICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAg
ICAgICAgaWYgKGlzSlNBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAg
ICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBq
c0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChqc0FycmF5
LT5jYW5TZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgo
Kmdsb2JhbERhdGEsIGksIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGpzQXJyYXktPkpTQXJyYXk6OnB1dEJ5
SW5kZXgoanNBcnJheSwgY2FsbEZyYW1lLCBpLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUo
KSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFz
ZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewor
ICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRl
QXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAgICAgICBK
U0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOwogICAgICAg
ICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIGlmIChqc1ZhbHVlLmlzSW50MzIoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IGY4M2E3NTk0OWY2Nzk5MzAwZTJmNzFhNjI0MDM0YWQxOGQ0MGE1OTEuLmU2
NGU2OTBmZTc4Yjc5ODAxNjU3YTg3ZDEyYTdmYTRkNDVhZjIxZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtMzI5LDcgKzMyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCBzY3JhdGNoLCBSZWdpc3RlcklEIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJNb2Rl
LCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpT
Q2VsbCogb3duZXIsIFJlZ2lzdGVySUQgdmFsdWUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVC
YXJyaWVyTW9kZSwgV3JpdGVCYXJyaWVyVXNlS2luZCk7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0
ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJl
c3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2lj
SlNPYmplY3QoU3RydWN0dXJlVHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3Rv
cmFnZVB0cik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW1pdEFsbG9jYXRl
SlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQg
c3RvcmFnZVB0cik7CiAgICAgICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5jdGlv
bkV4ZWN1dGFibGUqLCBSZWdpc3RlcklEIHNjb3BlQ2hhaW4sIFJlZ2lzdGVySUQgcmVzdWx0LCBS
ZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKaW5kZXggZWZlNzA4MDlmOTI4NzI4MWJkNzUyMWVlNjA1
NmRlZDM3YTE1ZTc4OS4uZjQ4NTE1N2UzODY0YmU2ZWI3YTdkMDE1MTc2YTFkOTE1NDU3NjRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAgLTg0
LDcgKzg0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWEKIAogQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZHN0LCBKdW1wTGlzdCYgZmFpbHVyZXMpCiB7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhzcmMpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNT
dHJpbmdWUHRyKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3Moc3JjLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNT
dHJpbmc6OnNfaW5mbykpKTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0
aE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKDEpKSk7CiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNTdHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0
KTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRzdCkpOwpAQCAtMzk5
LDcgKzM5OSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlQ2hhcih1bnNpZ25lZCBzcmMpCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5n
KCkgJiYgYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgo
KSA9PSAxOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1
Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3Ry
dWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgc3RvcmFnZVB0cikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVu
YW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09i
amVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc3RvcmFnZVB0cikKIHsKICAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3Mg
PSAmbV9nbG9iYWxEYXRhLT5oZWFwLnNpemVDbGFzc0Zvck9iamVjdChzaXplb2YoQ2xhc3NUeXBl
KSk7CiAgICAgbG9hZFB0cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZXN1bHQpOwpAQCAt
NDA5LDEyICs0MDksMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUg
U3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2MKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVzdWx0KSwgc3RvcmFnZVB0cik7CiAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJnNp
emVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCk7CiAKLSAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3Qn
cyB2dGFibGUKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHZ0YWJsZSksIEFkZHJlc3MocmVz
dWx0KSk7Ci0KICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUKICAgICBz
dG9yZVB0cihzdHJ1Y3R1cmUsIEFkZHJlc3MocmVzdWx0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CiAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBjbGFzc0luZm8gcG9pbnRl
cgorICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoJkNsYXNzVHlwZTo6c19pbmZvKSwgQWRkcmVz
cyhyZXN1bHQsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKwogICAgIC8vIGluaXRpYWxp
emUgdGhlIGluaGVyaXRvciBJRAogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJl
c3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKQEAgLTQyNSwx
MiArNDI1LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVj
dHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1
cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7Ci0gICAgZW1pdEFs
bG9jYXRlQmFzaWNKU09iamVjdDxKU0ZpbmFsT2JqZWN0PihzdHJ1Y3R1cmUsIG1fZ2xvYmFsRGF0
YS0+anNGaW5hbE9iamVjdFZQdHIsIHJlc3VsdCwgc2NyYXRjaCk7CisgICAgZW1pdEFsbG9jYXRl
QmFzaWNKU09iamVjdDxKU0ZpbmFsT2JqZWN0PihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7
CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKIHsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pT
T2JqZWN0PEpTRnVuY3Rpb24+KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkpLCBtX2dsb2JhbERhdGEtPmpzRnVuY3Rpb25W
UHRyLCByZXN1bHQsIHN0b3JhZ2VQdHIpOworICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8
SlNGdW5jdGlvbj4oVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPm5h
bWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSksIHJlc3VsdCwgc3RvcmFnZVB0cik7CiAKICAgICAvLyBz
dG9yZSB0aGUgZnVuY3Rpb24ncyBzY29wZSBjaGFpbgogICAgIHN0b3JlUHRyKHNjb3BlQ2hhaW4s
IEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzA1NGI1MzQxNTY0NzQ5
NmUwNzFmYWFkNmNiOWFjZTg0MDUyMDNmYS4uZjViZTI3OWE2MjljM2UxZmM2ZDU2MmU0OWFhYjNm
YWVhMDg0NTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjpw
cml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhKU0dsCiAKICAgICAvLyBDaGVjayBl
YXggaXMgYSBzdHJpbmcKICAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMxID0gZW1pdEp1bXBJ
Zk5vdEpTQ2VsbChyZWdUMCk7Ci0gICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNhc2VzMiA9IGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRh
LT5qc1N0cmluZ1ZQdHIpKTsKKyAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBv
a2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIFVzdHJpbmcuCiAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpKSwgcmVnVDApOwpA
QCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
LCByZWdUMCk7CiAgICAgCiAgICAgSnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCks
IFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICBpc0lt
bS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0xMjAyLDcgKzEyMDIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIHJlZ1QwKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwg
VHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMGNl
YTQ5ZTgyZjMyZGZhMzAyM2NlNjFjMmJkZWIyNjVmN2ZhYjYwNS4uNTljNDJiOGQ2MDUxNmRkYmVk
M2RjOTljNmJjZDFjY2MxN2EyMTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcApAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFi
bGVNZW1vcnlIYW5kbGU+IEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMo
SlNHbAogICAgIC8vIHJlZ1QwIGhvbGRzIHBheWxvYWQsIHJlZ1QxIGhvbGRzIHRhZwogCiAgICAg
SnVtcCBzdHJpbmdfZmFpbHVyZUNhc2VzMSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2Fz
ZXMyID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0ciht
X2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNl
czIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAKICAgICAvLyBD
aGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgVXN0cmluZy4KICAgICBs
b2FkMzIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCkp
LCByZWdUMik7CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0
aXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoc3JjLCBy
ZWdUMSwgcmVnVDApOwogCiAgICAgSnVtcCBpc0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0
YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
JkpTU3RyaW5nOjpzX2luZm8pKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChk
c3QgIT0gc3JjKQpAQCAtOTYzLDggKzk2Myw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46CiAg
ICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1
YWwKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0g
ICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCks
IFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7Ci0gICAgZ2VuZXJp
Y0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiksIFRydXN0ZWRJ
bW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgZ2VuZXJp
Y0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAK
ICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0
aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDExLDggKzEwMTEsOCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5PgogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93Q2FzZShpdGVyKSk7
IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHRhZ3MgZXF1
YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRy
KSkpOwotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDIpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAg
IGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZv
KSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmlu
Zzo6c19pbmZvKSkpOwogCiAgICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGxFcVN0cmluZ3ModGhpcywgY3RpX29wX2VxX3N0cmluZ3MpOwpAQCAtMTA0OCw4ICsxMDQ4
LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHkKIAogICAgIC8vIEp1bXAgdG8gYSBzbG93IGNh
c2UgaWYgYm90aCBhcmUgc3RyaW5ncy4KICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgSnVtcCBm
aXJzdE5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0
ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0
YS0+anNTdHJpbmdWUHRyKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRy
KEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICBub3RDZWxsLmxpbmsodGhpcyk7CiAg
ICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtMTUyNCw3ICsxNTI0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogCiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVn
VDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICBt
YXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSwgdGhp
c1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2NzE3YTEwYmNiYzc4ZjJiNTRhMzIxODM2
NGE3YWRjZDZjYmM2MzFkLi40ODk1MWU4NzkzNGIwNGMwMjQ1ZjMwODFiYTgzODkzNTk0ZTIyODc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cApAQCAtNTQsNyArNTQsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewogICAgIEpTSW50ZXJmYWNlSklU
IGppdDsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIoZ2xvYmFsRGF0
YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0
aCB0byByZWdUMiwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9p
bnRlciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBl
cnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMik7CkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRh
LT5qc0FycmF5VlB0cikpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZK
U0FycmF5OjpzX2luZm8pKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogICAg
IGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sK
ICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBi
YXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRy
KSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6
c19pbmZvKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbChtX2dsb2JhbERh
dGEtPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAg
ICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgemVyb0V4dGVuZDMyVG9QdHIo
cmVnVDEsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJh
c2UpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCks
IFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5VlB0cikpKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNBcnJh
eTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTU1OSw2ICs1NTksNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZQogICAgIC8vIGFuIHVuY29uZGl0aW9uYWwgYmFycmllciBo
ZXJlLgogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFVu
Y29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsK
IAorICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkpOwogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogICAgIGNvbXBpbGVQ
dXREaXJlY3RPZmZzZXQocmVnVDAsIHJlZ1QxLCBjYWNoZWRPZmZzZXQpOwogCkBAIC02MTgsNyAr
NjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvID0gJm1fY29kZUJsb2NrLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKIAogICAgIC8v
IENoZWNrIGVheCBpcyBhbiBhcnJheQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5q
c0FycmF5VlB0cikpOworICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0
aGUgbGVuZ3RoIGZyb20gdGhlIHN0b3JhZ2UKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
QXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGZlYWY4Yjg5ZGU5
NDRlZTQxNmM3YTgzZDIyMzc4NGMwYjlkZDc0MjAuLmI3M2Q3YWI3NTE2MjIxNWEzM2Q3MzVjZWU5
N2Y5N2JhM2Q3ZmIyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIEpJVDo6Q29kZVJl
ZiBKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0OwogICAgIEp1bXBMaXN0IGZhaWx1cmVzOwot
ICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
KSwgVHJ1c3RlZEltbVB0cihnbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVy
ZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwog
ICAgIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMSwgYW5kIHN0YXJ0IHRoZSBw
cm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAgaml0Lmxv
YWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkp
LCByZWdUMSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Zh
bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIAogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFn
KSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZElt
bVB0cihtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QzKTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0Fy
cmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0NhcwogCiAgICAgSnVtcCBub25DZWxsID0ganVtcCgpOwogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsgLy8gYmFzZSBhcnJheSBjaGVjawotICAgIEp1bXAgbm90U3RyaW5nID0g
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzU3RyaW5nVlB0cikpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpOwogICAgIGVtaXROYWtlZENhbGwobV9nbG9iYWxE
YXRhLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAg
ICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9y
ZShkc3QsIHJlZ1QxLCByZWdUMCk7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIAogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBy
ZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
KSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0Fy
cmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVn
VDAsIHJlZ1QxLCByZWdUMSwgcmVnVDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFdyaXRl
QmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKICAgICAvLyBDaGVj
ayBmb3IgYXJyYXkKLSAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIp
KTsKKyAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKTsKICAgICAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5n
dGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6
c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAppbmRleCA0MTM2MTRlOTQ2MGU5ZGM1ZTc1MGI0ZTA0MWU5Njc0MGQwZWM5N2U0Li45ZWIz
OGUwZDY0OTgwZWZmY2I2Nzc3ODIyMjUzZDViZTliNDk5YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcApAQCAtODc1LDEyICs4NzUsMTIgQEAgTkVWRVJfSU5MSU5FIHZv
aWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVC
bG9jayogY28KICAgICAKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCk7CiAKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1
ZSkgJiYgcHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkg
eworICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZy
YW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIEpJVDo6Y29tcGlsZVBhdGNo
R2V0QXJyYXlMZW5ndGgoY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNvZGVC
bG9jaywgcmV0dXJuQWRkcmVzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
aWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0g
Y2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgaWYgKGlzSlNTdHJpbmco
YmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CiAgICAgICAgIC8vIFRoZSB0cmFkZW9mZiBvZiBjb21waWxpbmcgYW4gcGF0Y2hl
ZCBpbmxpbmUgc3RyaW5nIGxlbmd0aCBhY2Nlc3Mgcm91dGluZSBkb2VzIG5vdCBzZWVtCiAgICAg
ICAgIC8vIHRvIHBheSBvZmYsIHNvIHdlIGN1cnJlbnRseSBvbmx5IGRvIHRoaXMgZm9yIGFycmF5
cy4KICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgcmV0dXJu
QWRkcmVzcywgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUo
KSk7CkBAIC0yNDc4LDcgKzI0NzgsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfZ2V0X2J5X3ZhbCkKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFt
ZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwot
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBAIC0y
NDkyLDEzICsyNDkxLDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF9nZXRfYnlfdmFsKQogCiAgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAg
IHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlzSlNTdHJp
bmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJ
bmRleChpKSkgeworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKSB7CiAgICAgICAgICAgICBjdGlQYXRjaENhbGxC
eVJldHVybkFkZHJlc3MoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVT
UywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV92YWxfc3RyaW5nKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGNhbGxGcmFtZSwg
aSk7CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSlNC
eXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUp
LT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFs
dWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CiAgICAg
ICAgICAgICAvLyBBbGwgZmFzdCBieXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZlIGZyb20gZXhj
ZXB0aW9ucyBzbyByZXR1cm4gaW1tZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9uIGNoZWNrcy4K
ICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3Zh
bF9ieXRlX2FycmF5KSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQnl0
ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGNhbGxGcmFtZSwgaSkpOwpAQCAtMjUxOSw3ICsy
NTE4LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92
YWxfc3RyaW5nKQogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICAK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKICAgICAKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwpAQCAtMjUy
OCwxMSArMjUyNiwxMSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
Z2V0X2J5X3ZhbF9zdHJpbmcpCiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50
MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAg
ICAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFs
dWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAg
cmVzdWx0ID0gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGNhbGxGcmFt
ZSwgaSk7Ci0gICAgICAgICAgICBpZiAoIWlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVl
KSkKKyAgICAgICAgICAgIGlmICghaXNKU1N0cmluZyhiYXNlVmFsdWUpKQogICAgICAgICAgICAg
ICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBT
VFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbCkpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTI1NDksNyArMjU0Nyw2IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAgICAgU1RV
Ql9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogICAgIAogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBAIC0yNTU4LDEzICsyNTU1LDEzIEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsX2J5dGVfYXJy
YXkpCiAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1
aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Ci0gICAgICAgIGlmIChpc0pTQnl0ZUFy
cmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAm
JiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAg
ICAgLy8gQWxsIGZhc3QgYnl0ZSBhcnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlv
bnMgc28gcmV0dXJuIGltbWVkaWF0ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdl
dEluZGV4KGNhbGxGcmFtZSwgaSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmVzdWx0ID0gYmFz
ZVZhbHVlLmdldChjYWxsRnJhbWUsIGkpOwotICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXkoZ2xv
YmFsRGF0YSwgYmFzZVZhbHVlKSkKKyAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGJhc2VWYWx1
ZSkpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZyYW1lLT5j
b2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9i
eV92YWwpKTsKICAgICB9IGVsc2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxG
cmFtZSwgc3Vic2NyaXB0LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwpAQCAtMjYwNCwxMyArMjYwMSwx
MyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsKQogCiAgICAgaWYg
KExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1
YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJh
c2VWYWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CiAgICAgICAg
ICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAg
aWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIGpzQXJyYXktPnNl
dEluZGV4KCpnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBjYWxsRnJhbWUsIGksIHZhbHVl
KTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1
ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBq
c0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5f
QUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkpOwogICAg
ICAgICAgICAgLy8gQWxsIGZhc3QgYnl0ZSBhcnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4
Y2VwdGlvbnMgc28gcmV0dXJuIGltbWVkaWF0ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3Mu
CkBAIC0yNjQzLDcgKzI2NDAsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRf
YnlfdmFsX2J5dGVfYXJyYXkpCiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwog
ICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUo
KTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7
CkBAIC0yNjUxLDcgKzI2NDcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRf
YnlfdmFsX2J5dGVfYXJyYXkpCiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50
MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAg
ICAgICBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5k
ZXgoaSkpIHsKICAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEFsbCBmYXN0IGJ5
dGUgYXJyYXkgYWNjZXNzZXMgYXJlIHNhZmUgZnJvbSBleGNlcHRpb25zIHNvIHJldHVybiBpbW1l
ZGlhdGVseSB0byBhdm9pZCBleGNlcHRpb24gY2hlY2tzLgpAQCAtMjY2Niw3ICsyNjYyLDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGdsb2Jh
bERhdGEsIGJhc2VWYWx1ZSkpCisgICAgICAgIGlmICghaXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
KQogICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCksIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9wdXRfYnlf
dmFsKSk7CiAgICAgICAgIGJhc2VWYWx1ZS5wdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CiAgICAg
fSBlbHNlIHsKQEAgLTM0MzMsNyArMzQyOSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9pc19zdHJpbmcpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNKU1N0
cmluZyhzdGFja0ZyYW1lLmdsb2JhbERhdGEsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNKU1N0cmluZyhzdGFj
a0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKSkpOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTihF
bmNvZGVkSlNWYWx1ZSwgb3BfaXNfb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAppbmRleCBlY2M0OTFlODdiMTE2NzdmYzllOTE4MjE1
MTYzOTRmODc1ZmNhNjUwLi5hYjc4ZWFhOTk3MjU0ZDk4NjY4MDU4MDU1ZmY2NzJjMjFlNDQ5ODlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkSlNT
dHJpbmdBcmd1bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwotICAgICAgICAgICAg
bV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGRzdCwgMCksIFRy
dXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBt
X2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQg
YXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA5ODM2
YTEyMDdmY2NhYmZjZGRiZWMzYzg1MGQ1NjU0MDYwNTBmMDIwLi5kMTE5NWZiZjQ1MTc4OWViZjhh
OTQ0ZWFmOWMxYmI2OWZmYmUzM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtNDEsNiArNDEsOCBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3Rh
dGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9S
KEFycmF5Q29uc3RydWN0b3IpOworCiBjb25zdCBDbGFzc0luZm8gQXJyYXlDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVj
U3RhdGU6OmFycmF5Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIEFycmF5Q29uc3RydWN0b3IubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRl
eCBiNzg0NDEzYWY4ZWI0ZWNkYmJiYmMzM2E2Yzk1NjkwMDMzYTA5YmMwLi5kOGQxNGYzNGZmMjYw
ZjdhZDc3MDVmOTQ1ZTJiMzA0OTNkY2EzYzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
IAotICAgIGJvb2wgaXNSZWFsQXJyYXkgPSBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpc1ZhbHVlKTsKKyAgICBib29sIGlzUmVhbEFycmF5ID0gaXNKU0FycmF5KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKCFpc1JlYWxBcnJheSAmJiAhdGhpc1ZhbHVlLmluaGVyaXRzKCZKU0FycmF5Ojpz
X2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU0Fy
cmF5KiB0aGlzT2JqID0gYXNBcnJheSh0aGlzVmFsdWUpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgc2VwYXJhdG9yID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
Yyk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXNPYmopKSB7CisgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAg
ICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAKICAgICAgICAgaWYgKGxl
bmd0aCkgewpAQCAtMzg4LDcgKzM4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogCi0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzVmFsdWUpKQorICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcCgp
KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwpA
QCAtNDEyLDcgKzQxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPmhvc3RUaGlzVmFsdWUoKTsKIAotICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgeworICAgIGlm
IChpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewog
ICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKICAgICAgICAgYXJy
YXktPnB1c2goZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwpAQCAtNDgxLDcgKzQ4MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgcmVzdWx0ID0gdGhpc09iai0+Z2V0KGV4ZWMsIDApOwotICAgICAgICBpZiAoaXNK
U0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKQorICAgICAgICBpZiAoaXNKU0Fy
cmF5KHRoaXNPYmopKQogICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnNoaWZ0Q291
bnQoZXhlYywgMSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBr
ID0gMTsgayA8IGxlbmd0aDsgaysrKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgdW5zaWduZWQgYWRkaXRpb25hbEFyZ3MgPSBzdGQ6Om1heDxpbnQ+KGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSAtIDIsIDApOwogICAgIGlmIChhZGRpdGlvbmFsQXJncyAhPSBkZWxldGVDb3VudCkg
ewogICAgICAgICBpZiAoYWRkaXRpb25hbEFyZ3MgPCBkZWxldGVDb3VudCkgewotICAgICAgICAg
ICAgaWYgKCghYmVnaW4pICYmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09i
aikpKQorICAgICAgICAgICAgaWYgKCghYmVnaW4pICYmIChpc0pTQXJyYXkodGhpc09iaikpKQog
ICAgICAgICAgICAgICAgICgoSlNBcnJheSAqKXRoaXNPYmopLT5zaGlmdENvdW50KGV4ZWMsIGRl
bGV0ZUNvdW50IC0gYWRkaXRpb25hbEFyZ3MpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gYmVnaW47IGsgPCBsZW5ndGggLSBkZWxldGVDb3Vu
dDsgKytrKSB7CkBAIC02NDMsNyArNjQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAg
ICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCBrIC0gMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
T2JqKSkpCisgICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSh0aGlzT2JqKSkp
CiAgICAgICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnVuc2hpZnRDb3VudChleGVj
LCBhZGRpdGlvbmFsQXJncyAtIGRlbGV0ZUNvdW50KTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aCAtIGRlbGV0ZUNvdW50OyBrID4g
YmVnaW47IC0taykgewpAQCAtNjc2LDcgKzY3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2ln
bmVkIG5yQXJncyA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoKG5yQXJncykgJiYg
KGxlbmd0aCkpIHsKLSAgICAgICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzT2JqKSkKKyAgICAgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgICAgICgo
SlNBcnJheSAqKXRoaXNPYmopLT51bnNoaWZ0Q291bnQoZXhlYywgbnJBcmdzKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiAwOyAtLWsp
IHsKQEAgLTcxNSw3ICs3MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jRmlsdGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGZpbHRlcklu
ZGV4ID0gMDsKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAgICAg
ICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5
KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2Fs
bChleGVjLCBmLCAzKTsKQEAgLTc3Myw3ICs3NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTQXJyYXkq
IHJlc3VsdEFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBsZW5ndGgpOwogICAgIHVu
c2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJh
eSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkgeworICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBm
ID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJh
eSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpA
QCAtODM2LDcgKzgzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xl
YW4odHJ1ZSk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAg
ICAgICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0Fy
cmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVk
Q2FsbChleGVjLCBmLCAzKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKIAogICAgIHVuc2lnbmVkIGsgPSAw
OwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzT2JqKSkgeworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYm
IGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlv
bihmdW5jdGlvbik7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsK
ICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtOTQ0LDcgKzk0
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7CiAK
ICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBp
c0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5j
dGlvbiogZiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBm
LCAzKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNSZWR1Y2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKIAogICAgIEpTQXJyYXkqIGFycmF5ID0gMDsKLSAgICBpZiAo
aXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKQorICAgIGlmIChpc0pTQXJy
YXkodGhpc09iaikpCiAgICAgICAgIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKIAogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikKQEAgLTEwNzksNyArMTA3OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAg
SlNBcnJheSogYXJyYXkgPSAwOwotICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpc09iaikpCisgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgYXJyYXkg
PSBhc0FycmF5KHRoaXNPYmopOwogICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
Pj0gMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29u
c3RydWN0b3IuY3BwCmluZGV4IGRjMjhkZTE0MzE4MTI2NTgxMWMyYmYxNTk3MDJhZDI3MzUwYzIz
YWIuLmE1NGQyODFhN2UwYmE0N2VlZWEwYjc3NzU5NmI3OGIyNzFkMzhiZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoQm9vbGVhbkNvbnN0cnVjdG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9S
KEJvb2xlYW5Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFuQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShCb29sZWFuQ29uc3RydWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKaW5kZXggNWE0NDljMDYzOTM3NTc1MjUz
ODEyMWE5MTQ2OGIxNzk1NTc4MjI3My4uMzdjNmVhYjBkZGVjZTNmNTRjM2VjYWM5MmFkODkyZjNm
ZDUyODBiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9i
amVjdC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEJvb2xlYW5PYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoQm9vbGVhbk9iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFuT2JqZWN0Ojpz
X2luZm8gPSB7ICJCb29sZWFuIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5PYmplY3QpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5kZXggYzdlYTk2NGVjN2Uz
ZTVmMzk0YWUxY2JhYmUwYzdmMmUyYWUwZDQyOC4uYjk2MDVkMGNmYzdmZjA4YTIwMGViOWQ1Mzlj
YjE4NmMxYWJmMDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEJv
b2xlYW5Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkJvb2xlYW4iLCAmQm9vbGVhbk9iamVjdDo6c19p
bmZvLAogKi8KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuUHJvdG90eXBlKTsK
K0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEJvb2xlYW5Qcm90b3R5cGUpOwogCiBCb29s
ZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBCb29sZWFuT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAw
OWZlZGIzZjRlODMzYTRiZjIzMjZlODgxZTkwYTZkZmMzZDBkNzYyLi45ZmZmNjRlNjc1YTUwNTM4
MDEzZGYxNTgxYTIxODQ3OGFkZjk4NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbGFzc0luZm8uaApAQCAtMzMsNiArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1
Y3QgSGFzaFRhYmxlOwogCiAgICAgc3RydWN0IE1ldGhvZFRhYmxlIHsKKyAgICAgICAgdHlwZWRl
ZiB2b2lkICgqRGVzdHJveUZ1bmN0aW9uUHRyKShKU0NlbGwqKTsKKyAgICAgICAgRGVzdHJveUZ1
bmN0aW9uUHRyIGRlc3Ryb3k7CisKICAgICAgICAgdHlwZWRlZiB2b2lkICgqVmlzaXRDaGlsZHJl
bkZ1bmN0aW9uUHRyKShKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBWaXNpdENoaWxk
cmVuRnVuY3Rpb25QdHIgdmlzaXRDaGlsZHJlbjsKIApAQCAtMTE0LDYgKzExNyw3IEBAIHN0cnVj
dCBNZW1iZXJDaGVjayMjbWVtYmVyIHsgXAogI2RlZmluZSBIQVNfTUVNQkVSX05BTUVEKGtsYXNz
LCBuYW1lKSAoTWVtYmVyQ2hlY2sjI25hbWU8a2xhc3M+OjpoYXMpCiAKICNkZWZpbmUgQ1JFQVRF
X01FVEhPRF9UQUJMRShDbGFzc05hbWUpIHsgXAorICAgICAgICAmQ2xhc3NOYW1lOjpkZXN0cm95
LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnZpc2l0Q2hpbGRyZW4sIFwKICAgICAgICAgJkNsYXNz
TmFtZTo6Z2V0Q2FsbERhdGEsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0Q29uc3RydWN0RGF0
YSwgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggOTMxODk5ZWIwYTNjZWQ3NTY3YjhlOGNkZjdlZDBjNGQ0YjllZjUzMi4uYWQ0
MDJjNzc1MWQ5YTdkYzQzYmQ3NjBkZjlhYzU4MDFmZGU3NzlhYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC03Miw2ICs3Miw3
IEBAIGNvbnN0IENsYXNzSW5mbyBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mCiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKERhdGVDb25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihEYXRl
Q29uc3RydWN0b3IpOwogCiBEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVy
bmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggNTQ1NzU3YjkzZjQ3YjY1NGZh
YWI3M2E4ZGRkNGRhNjNjODllM2M4YS4uYTUwMjc3MGM4NzUwOGI3MmU0ZjI0OThkZDljNzYyNzVj
Y2I3OGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuY3BwCkBAIC01Myw2ICs1MywxMSBAQCB2b2lkIERhdGVJbnN0YW5jZTo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBkb3VibGUgdGltZSkKICAgICBzZXRJbnRlcm5h
bFZhbHVlKGdsb2JhbERhdGEsIGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAKK3ZvaWQg
RGF0ZUluc3RhbmNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8RGF0ZUlu
c3RhbmNlKj4oY2VsbCktPkRhdGVJbnN0YW5jZTo6fkRhdGVJbnN0YW5jZSgpOworfQorCiBjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSogRGF0ZUluc3RhbmNlOjpjYWxjdWxhdGVHcmVnb3JpYW5EYXRl
VGltZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgZG91YmxlIG1pbGxpID0gaW50ZXJu
YWxOdW1iZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmgKaW5kZXggMzI0MTcwYjFjYWY0MDgwNzdkMGZlNDUxZDhiZjU1NWUwNjY0OWMwMC4uOGQ5MGNm
MGM0MTdhZjg4MzU3Y2YwOGRmMmM4OWViMjM0MWM0MTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKICAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBkb3VibGUpOwotICAgICAgICAKKworICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworIAogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBKU1dyYXBwZXJPYmplY3QgQmFzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuY3BwCmluZGV4IDRhMWUxNDgyMDU1ZDlhY2QyNzdlNTQ1NjFiMzdiZjIxNjkxNmQ2
OWIuLmE1MzczZDUyNWNhMTY2NDVjOGEyZWYzYWQ4NWQ4OWI0NTJjMDI0NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE3MCw2ICsxNzAsMTEgQEAgQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pOwogCiBjb25z
dCBDbGFzc0luZm8gU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uKSB9OwogCit2b2lkIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbio+KGNlbGwpLT5TdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246On5TdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24oKTsKK30KKwogSlNWYWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGFjNzM1NGQzMTcyMDRjZTdh
NzdjOWU4ZTA5ZjAzZTczZWExYTJmMjMuLjE3YzM0OThiY2ZmNDkzNTlmZjg2NGYxZTE4YWIzYTQw
NDEyNzNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtODIsNiAr
ODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTIzMDlkMWZkNmFhOTc0Mzk5
YzY1NDdiNTYzNWZlNThlNjk0NGZmYy4uYzhmOTNiYTMyM2NjNWRjN2E3ZTM4Zjc1MjdiMGYyM2Rj
Yzg4ZjMwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9yQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoRXJyb3JDb25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBFcnJv
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoRXJyb3JDb25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA4M2FiZTVjMjYw
MDY1MDYwNTdjMjAzM2Y2Y2JhMjg4MjJlZmRkZWM3Li45MWE2ZmM0MGVhYjgxMTdkNmM1MWM5MGZi
MmQwODNhZWIzOGNjYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckluc3RhbmNlLmNwcApAQCAtMjMsNiArMjMsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRXJyb3JJbnN0YW5jZSk7CisKIGNvbnN0IENs
YXNzSW5mbyBFcnJvckluc3RhbmNlOjpzX2luZm8gPSB7ICJFcnJvciIsICZKU05vbkZpbmFsT2Jq
ZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRXJyb3JJbnN0YW5jZSkgfTsK
IAogRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkNWFjZTgwN2E0ZDNiOThjMmE3MzIyMmQ2
NjE1NzFhYTk1MmM3MDIzLi4wNWU5NzFmN2ZmMDViM2U2NDRlYWJiOTZiNWNjMDY5NTllNmQ4Yjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcApAQCAtNDEsNiArNDEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcik7CisKIGNvbnN0
IENsYXNzSW5mbyBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJJbnRlcnJ1
cHRlZEV4ZWN1dGlvbkVycm9yIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKSB9OwogCiBKU1ZhbHVlIEludGVycnVwdGVk
RXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSog
ZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQpAQCAtNjYsNiArNjgsOCBAQCBib29s
IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNWYWx1ZSB2YWx1ZSkKIH0KIAogCitB
U1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOwor
CiBjb25zdCBDbGFzc0luZm8gVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJU
ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcikgfTsKIAogSlNWYWx1ZSBUZXJtaW5h
dGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0
ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA2NGU5MmU4YWYxZGZlMTNmYzExNmM2
NTgwOWYwYTUxNjc4M2NiM2IyLi5hZDg2NDYzZGJmNDc3MmIxYTZkZjNjZDNiYTQ1MWQxZDhjNTEx
NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApA
QCAtMzgsNiArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBFeGVj
dXRhYmxlQmFzZTo6c19pbmZvID0geyAiRXhlY3V0YWJsZSIsIDAsIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoRXhlY3V0YWJsZUJhc2UpIH07CiAKK3ZvaWQgRXhlY3V0YWJsZUJhc2U6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KGNlbGwpLT5F
eGVjdXRhYmxlQmFzZTo6fkV4ZWN1dGFibGVCYXNlKCk7Cit9CisKIGlubGluZSB2b2lkIEV4ZWN1
dGFibGVCYXNlOjpjbGVhckNvZGUoKQogewogI2lmIEVOQUJMRShKSVQpCkBAIC02MSw4ICs2Niw5
IEBAIEludHJpbnNpYyBFeGVjdXRhYmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKIAogY29uc3Qg
Q2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUi
LCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRp
dmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVjdXRhYmxlOjp+TmF0aXZlRXhlY3V0YWJsZSgp
Cit2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpz
Q2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oY2VsbCktPk5hdGl2ZUV4ZWN1dGFibGU6On5OYXRpdmVF
eGVjdXRhYmxlKCk7CiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTkzLDYgKzk5LDExIEBA
IHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogCiBjb25zdCBD
bGFzc0luZm8gU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIs
ICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlw
dEV4ZWN1dGFibGUpIH07CiAKK3ZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCit7CisgICAganNDYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihjZWxsKS0+U2NyaXB0RXhl
Y3V0YWJsZTo6flNjcmlwdEV4ZWN1dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEV2YWxF
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAK
IEV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQpCkBAIC0xMDAsOCArMTExLDkg
QEAgRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBib29sIGkKIHsKIH0KIAotRXZhbEV4ZWN1dGFibGU6On5FdmFs
RXhlY3V0YWJsZSgpCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
IHsKKyAgICBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKS0+RXZhbEV4ZWN1dGFibGU6On5F
dmFsRXhlY3V0YWJsZSgpOwogfQogCiBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIlByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKQEAgLTEx
MSw4ICsxMjMsOSBAQCBQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiB7CiB9CiAKLVByb2dyYW1FeGVj
dXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKQordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2Vs
bCktPlByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAogY29uc3Qg
Q2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRh
YmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CkBAIC0xMzcsOCArMTUwLDkgQEAgRnVuY3Rpb25FeGVj
dXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLAogewogfQogCi1GdW5jdGlvbkV4ZWN1dGFibGU6On5GdW5jdGlvbkV4ZWN1dGFi
bGUoKQordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewor
ICAgIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKS0+RnVuY3Rpb25FeGVjdXRhYmxl
Ojp+RnVuY3Rpb25FeGVjdXRhYmxlKCk7CiB9CiAKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRl
eCA2Mzk1ODQzYWMyZDNlYWM2YzFlNDM0YjhhYzJhMDJjYmI3YzA0ZjI3Li43Zjg1YzkwMjcwN2U2
ZWJhNjdlNjZmNzc1MGExZDBlZDI1MWNlMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC03Nyw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoKG1fbnVtUGFyYW1ldGVyc0ZvckNh
bGwgPT0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCkgPT0gKG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0
cnVjdCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUKSk7CkBAIC0yMDYsNyArMjA4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgfk5hdGl2
ZUV4ZWN1dGFibGUoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAog
ICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0K
ICAgICAgICAgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2NvbnN0cnVj
dG9yOyB9CkBAIC0yNzQsNiArMjc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAg
ICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICAg
ICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigp
LT5hc0lEKCk7IH0KICAgICAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KQEAgLTMxOCw3ICszMjIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0
YWJsZSBCYXNlOwogCi0gICAgICAgIHZpcnR1YWwgfkV2YWxFeGVjdXRhYmxlKCk7CisgICAgICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBp
bGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiAgICAg
ICAgIHsKQEAgLTM5MSw3ICszOTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBleGVjdXRhYmxlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+UHJvZ3JhbUV4
ZWN1dGFibGUoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
ICAgICBKU09iamVjdCogY29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluTm9kZSkKICAgICAgICAgewpAQCAtNDY4LDcgKzQ3Miw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIH5GdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKIAogICAgICAgICBKU0Z1bmN0aW9uKiBtYWtlKEV4ZWNTdGF0ZSogZXhl
YywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YmU0YzYzYzQ1NzZjZTc0MDFkMWZjOTAxNjllZTQ2ZjMwNzVlNmUwNi4uZTA4ZTU4YzgzNWE4ZDJm
ZDE1ZGEzZGJmMDg4NmFjOWJkOTE3NDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uQ29u
c3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRnVuY3Rpb25Db25zdHJ1
Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVu
Y3Rpb25Db25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IDE5ODk4MjdiMmZkYWY3NWYxZTg5NzJh
NjY0NGZmNmI1ZjZhZjJhMjkuLmIxMDE3ZTQ5MzcyZTM1NzExNmQwZTllMjU4MGVjYWNkOTc2YTQy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKEZ1bmN0aW9uUHJvdG90eXBlKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0
aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Qcm90b3R5cGUpIH07CiAKQEAgLTEzNiw3ICsx
MzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jQXBw
bHkoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaWYgKGFzQXJndW1lbnRzKGFycmF5KS0+
bGVuZ3RoKGV4ZWMpID4gQXJndW1lbnRzOjpNYXhBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAg
ICAgICAgICAgICBhc0FyZ3VtZW50cyhhcnJheSktPmZpbGxBcmdMaXN0KGV4ZWMsIGFwcGx5QXJn
cyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIGFy
cmF5KSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzSlNBcnJheShhcnJheSkpIHsKICAgICAgICAg
ICAgIGlmIChhc0FycmF5KGFycmF5KS0+bGVuZ3RoKCkgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50
cykKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgICAgIGFzQXJyYXkoYXJyYXkpLT5maWxsQXJnTGlz
dChleGVjLCBhcHBseUFyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5jcHAKaW5kZXggMTdjYmI0NDlmMmM2ZDcxNzEzYTVlYjE1NjBkZjcyZTcyYzE5
Mjk3MS4uOTIwMzk5ZGRhM2YzOGJmODc3MWVlNTA1ZjY2ZDE5NGJkZGU5YzVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCkBAIC0yOCw2ICsy
OCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihHZXR0ZXJTZXR0ZXIpOworCiBjb25zdCBDbGFzc0luZm8gR2V0dGVyU2V0dGVyOjpzX2luZm8g
PSB7ICJHZXR0ZXJTZXR0ZXIiLCAwLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdldHRlclNl
dHRlcikgfTsKIAogdm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggM2EzNzFmOTUwZDNjZTNhMDc1
M2Q4MGRmOGIyYjk0MzU2YzNmNWRkOC4uZTVlMWMyYWU1ZjJhYTNjY2E2NWUzZTk2OGQ0NTQ2Mzg1
ODVhZGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTU3LDcgKzU3LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZ09uY2UoKQogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykK
ICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCi0gICAgSlNH
bG9iYWxEYXRhOjpzdG9yZVZQdHJzKCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKEFTU0VN
QkxFUikKICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAKaW5kZXggMTcxNDE2Mzc2NzEzOWI2MDNkYzQ2NmRlMzVkYjk2ODliMzdiOWIzYS4u
NTBlYTUwNGMxYTkzOTZkMjllZTU3N2EzN2ZlNWQwYTMzZGQ3MWJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTI5LDE4
ICsyOSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotLy8gRW5zdXJlIHRoZSBjb21waWxlciBn
ZW5lcmF0ZXMgYSB2dGFibGUgZm9yIEludGVybmFsRnVuY3Rpb24hCi12b2lkIEludGVybmFsRnVu
Y3Rpb246OnZ0YWJsZUFuY2hvcigpIHt9Ci0KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50
ZXJuYWxGdW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihJbnRlcm5hbEZ1
bmN0aW9uKTsKIAogY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rpb246OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShJbnRlcm5hbEZ1bmN0aW9uKSB9OwogCi1JbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5h
bEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChW
UHRyU3RlYWxpbmdIYWNrKQotewotfQotCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0
dXJlKQogewpAQCAtNjMsNyArNTYsNyBAQCBjb25zdCBVU3RyaW5nIEludGVybmFsRnVuY3Rpb246
OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1l
ID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3Bl
cnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAgICAKLSAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNK
U1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBkaXNwbGF5TmFtZSkpCisgICAgaWYgKGRpc3Bs
YXlOYW1lICYmIGlzSlNTdHJpbmcoZGlzcGxheU5hbWUpKQogICAgICAgICByZXR1cm4gYXNTdHJp
bmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1ZSgpOwogICAgIAogICAgIHJldHVybiBVU3RyaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgKaW5kZXggOGUyMTc4ZTNmNjU5NzhhOWMxYWVhZTlhNDU1ZjYyOWJmMTRjYWYwMy4uYTAzOGI3
YWUxOTc4OGJmZjQ0NWYwMjgyMjcyNGVjODZjYzgxMjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApAQCAtNDksMTcgKzQ5LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6
OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBk
ZXRlcm1pbmUgdGhlIEpTRnVuY3Rpb24gdnB0cgotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQ
dHJTdGVhbGluZ0hhY2tUeXBlKTsKLQogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKICAgICB9OwogCiAgICAgSW50ZXJu
YWxGdW5jdGlvbiogYXNJbnRlcm5hbEZ1bmN0aW9uKEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IGIxYjMz
ZjVkN2JhYTRlYzlkNmU5ZjRlOTMzZDc0MjEwOWM4NDQ0ZDMuLjg1MTcwODVkZmVlMjY4ZjNmNGY3
OTZiODE2NDIwZDcyN2EyNGM5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTQVBJVmFsdWVXcmFw
cGVyKTsKKwogY29uc3QgQ2xhc3NJbmZvIEpTQVBJVmFsdWVXcmFwcGVyOjpzX2luZm8gPSB7ICJB
UEkgV3JhcHBlciIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBUElWYWx1ZVdyYXBw
ZXIpIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAppbmRleCBmNzU2YzdiZTI0YTllNGQ1ODk3OGMwYTVmMjY1MzJlNGRlYmNh
MmExLi4wYzkyMjBlNjI2ZDI1ZTY2MWIxYTRmMjBiOWQ4ZjJkYzU5MWM5ZmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTI2LDExICsxMjYsNiBAQCBp
bmxpbmUgdm9pZCBKU0FycmF5OjpjaGVja0NvbnNpc3RlbmN5KENvbnNpc3RlbmN5Q2hlY2tUeXBl
KQogCiAjZW5kaWYKIAotSlNBcnJheTo6SlNBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAg
ICA6IEpTTm9uRmluYWxPYmplY3QoVlB0clN0ZWFsaW5nSGFjaykKLXsKLX0KLQogSlNBcnJheTo6
SlNBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CkBAIC0yNzcs
MTMgKzI3MiwxOCBAQCB2b2lkIEpTQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBzaQogCiBKU0FycmF5Ojp+SlNBcnJh
eSgpCiB7Ci0gICAgQVNTRVJUKHZwdHIoKSA9PSBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyKTsK
KyAgICBBU1NFUlQoanNDYXN0PEpTQXJyYXkqPih0aGlzKSk7CiAgICAgY2hlY2tDb25zaXN0ZW5j
eShEZXN0cnVjdG9yQ29uc2lzdGVuY3lDaGVjayk7CiAKICAgICBkZWxldGUgbV9zdG9yYWdlLT5t
X3NwYXJzZVZhbHVlTWFwOwogICAgIGZhc3RGcmVlKG1fc3RvcmFnZS0+bV9hbGxvY0Jhc2UpOwog
fQogCit2b2lkIEpTQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxK
U0FycmF5Kj4oY2VsbCktPkpTQXJyYXk6On5KU0FycmF5KCk7Cit9CisKIGJvb2wgSlNBcnJheTo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCmluZGV4IGU5NThkNTUyZjJmZWNmNGJkMTdkOWZjNWVhODU0ZTZlNmZiYzhjZTIu
LjFlYWQ4MmM4NjlkMTM3MWMxMjdmNzFhY2ZjY2Y3NzEwZmY0N2NiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTcxLDggKzcxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
IAotICAgICAgICBKU0FycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsKLSAgICAgICAgdmlydHVh
bCB+SlNBcnJheSgpOworICAgICAgICB+SlNBcnJheSgpOworICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewpAQCAt
MjE2LDggKzIxNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gYXNBcnJheSh2
YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT52cHRyKCkg
PT0gZ2xvYmFsRGF0YS0+anNBcnJheVZQdHI7IH0KLSAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXko
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkg
JiYgaXNKU0FycmF5KGdsb2JhbERhdGEsIHYuYXNDZWxsKCkpOyB9CisgICAgaW5saW5lIGJvb2wg
aXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpT
QXJyYXk6OnNfaW5mbzsgfQorICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsg
cmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKICAgICAvLyBS
dWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCiAgICAgLy8g
TXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFu
ZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCBjZjBiYTgzNTg1OGIzYjNhNWUxNDdkZWQ1
NjgzNjM3MzNiNzFmN2NmLi4wZTVhOTlhZTViZjg2OGUwMzA2MTkzMzE0Y2RlOGViNmY0YmMxOTM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEpTQm91bmRGdW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJV
Q1RPUihKU0JvdW5kRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSlNCb3VuZEZ1bmN0aW9u
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNCb3VuZEZ1bmN0aW9uKSB9OwogCkBAIC0zOCw3ICszOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTQm91
bmRGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKIAotICAgIEFTU0VSVChpc0pTQXJyYXkoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVu
dGx5IHRoaXMgaXMgdHJ1ZSEKKyAgICBBU1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJv
dW5kQXJncygpKSk7IC8vIEN1cnJlbnRseSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91
bmRBcmdzID0gYXNBcnJheShib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CiAKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtNTgsNyArNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTQm91bmRG
dW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKIAotICAgIEFTU0VSVChpc0pTQXJyYXkoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5
IHRoaXMgaXMgdHJ1ZSEKKyAgICBBU1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5k
QXJncygpKSk7IC8vIEN1cnJlbnRseSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91bmRB
cmdzID0gYXNBcnJheShib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCeXRlQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuY3BwCmluZGV4IDk5NzNjNTY2MWIyZTk3MjE3MjE1YzRiMzY2Yzc3YzQwZTcxODcw
YTQuLjc0NzhhMDhmYmE0OTM5NDdlOGFjNmY4NjhkNTRiMTVlNjVkNWRiMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTQxLDEzICs0MSwx
NSBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYQogewogfQogICAgICAgICAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECiBKU0J5dGVBcnJheTo6fkpTQnl0ZUFycmF5KCkKIHsKLSAgICBBU1NFUlQodnB0
cigpID09IEpTR2xvYmFsRGF0YTo6anNCeXRlQXJyYXlWUHRyKTsKKyAgICBBU1NFUlQoanNDYXN0
PEpTQnl0ZUFycmF5Kj4odGhpcykpOwogfQotI2VuZGlmCiAKK3ZvaWQgSlNCeXRlQXJyYXk6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxKU0J5dGVBcnJheSo+KGNlbGwpLT5K
U0J5dGVBcnJheTo6fkpTQnl0ZUFycmF5KCk7Cit9CiAKIFN0cnVjdHVyZSogSlNCeXRlQXJyYXk6
OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
Y2xhc3NJbmZvKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCeXRlQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5
LmgKaW5kZXggMDA0MWQxNGM0NDAwMTU4YjNlYWUxYjNhZWYyZDRhZWQ5ZmUxZmYzZS4uNTEyMmJh
ZDVlZmE0NzNiNjg4NDBmMTM2MDRkYTc5ZTQ5YzM1MWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCkBAIC0xMDIsOSArMTAyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UoKSBjb25zdCB7IHJldHVy
biBtX3N0b3JhZ2UuZ2V0KCk7IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgdmly
dHVhbCB+SlNCeXRlQXJyYXkoKTsKLSNlbmRpZgorICAgICAgICB+SlNCeXRlQXJyYXkoKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mU3RvcmFnZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0J5dGVBcnJh
eSwgbV9zdG9yYWdlKTsgfQogCkBAIC0xMTgsMTEgKzExNyw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxp
bmdIYWNrVHlwZSkKLSAgICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdI
YWNrKQotICAgICAgICB7Ci0gICAgICAgIH0KLQogICAgICAgICBSZWZQdHI8V1RGOjpCeXRlQXJy
YXk+IG1fc3RvcmFnZTsKICAgICB9OwogICAgIApAQCAtMTMyLDcgKzEyNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCeXRlQXJyYXkqPih2YWx1ZS5h
c0NlbGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgaXNKU0J5dGVBcnJheShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFz
Q2VsbCgpLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNCeXRlQXJyYXlWUHRyOyB9CisgICAgaW5s
aW5lIGJvb2wgaXNKU0J5dGVBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYg
di5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gJkpTQnl0ZUFycmF5OjpzX2luZm87IH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CmluZGV4IDQ5MWVmMDgxM2ZlODU4ZDRkMzg2NTY0N2Q2OGZhMWFjYjdiYzBhZTEuLjA2NWZkMTNl
YWExMmY1YmZlY2E1OGIyZThhZDI0MGY5MTVlN2RiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTQ2VsbCk7CisKK3ZvaWQgSlNDZWxs
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsK
K30KKwogYm9vbCBKU0NlbGw6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3Ry
aW5nVmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1N0cmluZygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA3NmNlZjA0NWE2OTE5OTI1YzBkNzc4YjNmODM3ZTZj
MmQ2OGY3NDdjLi5jNzU1YTYwM2QyNjc2ODEwMjljNWQwMWY1YTM1ZDFiZjdhZDc2NDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtNjUsMTUgKzY1LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBlbnVtIENyZWF0aW5nRWFybHlDZWxsVGFnIHsgQ3JlYXRp
bmdFYXJseUNlbGwgfTsKICAgICAgICAgSlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKTsKIAot
ICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9Owot
ICAgICAgICBleHBsaWNpdCBKU0NlbGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQotCiAgICAg
cHVibGljOgogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1l
bnROZXdEZXN0aW5hdGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0gLy8g
VXNlZCBmb3IgaW5pdGlhbGl6YXRpb24gYWZ0ZXIgR0MgYWxsb2NhdGlvbi4KIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgSlNDZWxsKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAg
ICB2aXJ0dWFsIH5KU0NlbGwoKTsgLy8gSW52b2tlZCBieSBHQyBmaW5hbGl6YXRpb24uCisgICAg
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAg
IC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgpAQCAtMTA4LDYgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVy
YXRpb24gaW5jbHVkZWQuCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3Q7CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xhc3NJbmZvKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OwogICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUpOwpAQCAtMTE3LDggKzExNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwog
Ci0gICAgICAgIHZvaWQqIHZwdHIoKSBjb25zdCB7IEFTU0VSVCghaXNaYXBwZWQoKSk7IHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKiBjb25zdCo+KHRoaXMpOyB9Ci0gICAgICAgIHZvaWQg
c2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2
cHRyOyBBU1NFUlQoIWlzWmFwcGVkKCkpOyB9CiAgICAgICAgIHZvaWQgemFwKCkgeyAqcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CiAgICAgICAgIGJvb2wgaXNaYXBw
ZWQoKSBjb25zdCB7IHJldHVybiAhKnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+
KHRoaXMpOyB9CiAKQEAgLTEzMyw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVy
ZSk7CiAgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNl
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxs
LCBtX2NsYXNzSW5mbyk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQqIHN0cnVj
dHVyZUFkZHJlc3MoKQogICAgICAgICB7CkBAIC0xNjYsMTMgKzE2Nyw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwog
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwotICAg
IAotICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IG1fc3RydWN0dXJlKGdsb2JhbERhdGEsIHRo
aXMsIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxs
KENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHsKQEAgLTE4OSwyNSArMTg2LDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlu
bGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCi0gICAgewotI2lm
IEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRp
YWxpemluZ09iamVjdCgpKTsKLSAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmpl
Y3QoZmFsc2UpOwotICAgICAgICBpZiAoc3RydWN0dXJlKQotI2VuZGlmCi0gICAgICAgICAgICBt
X3N0cnVjdHVyZS5zZXRFYXJseVZhbHVlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSk7Ci0g
ICAgICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFs
IHN0cnVjdHVyZS4KLSAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICFnbG9iYWxEYXRhLnN0
cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIEpTQ2VsbDo6fkpTQ2VsbCgp
CisgICAgaW5saW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSBT
dHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKCkgY29uc3QKKyAgICBpbmxpbmUgY29uc3QgQ2xh
c3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX2NsYXNzSW5mbzsKICAgICB9CiAK
ICAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKaW5kZXggMDgxMmYyMWMyYTIxM2E4YmYxYzQ5YmQ3NjBkNjM0MTNjZThmNjgxMy4u
NGUwNTUzNTJkZDVmZjJiMjdiNzkxYmM2MzQ0NWQwOTEzMjgyNjFlMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTczLDExICs3Myw2IEBAIEpT
RnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGluCiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1KU0Z1bmN0
aW9uOjpKU0Z1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgIDogQmFzZShWUHRyU3Rl
YWxpbmdIYWNrKQotewotfQotCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBCYXNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRh
YmxlKCkKQEAgLTExMywxNCArMTA4LDExIEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsCiAgICAg
cHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc2NvcGVDaGFpbk5vZGUtPmdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25OYW1lT2Zmc2V0KCksIGV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsK
IH0KIAotSlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24oKQordm9pZCBKU0Z1bmN0aW9uOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNG
dW5jdGlvblZQdHIpOwotfQotCi12b2lkIEpTRnVuY3Rpb246OnZ0YWJsZUFuY2hvcigpCi17Ci0g
ICAgZnByaW50ZihzdGRlcnIsICJXZSBuZWVkIHNvbWV0aGluZyBoZXJlIHRoYXQgVmlzdWFsIFN0
dWRpbyBjYW4ndCBvcHRpbWl6ZSBhd2F5LlxuIik7CisgICAgSlNGdW5jdGlvbiogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmNs
YXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoJkpTRnVuY3Rpb246OnNfaW5mbykpOworICAgIHRoaXNP
YmplY3QtPkpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCk7CiB9CiAKIHZvaWQgY3JlYXRlRGVzY3Jp
cHRvckZvclRocm93aW5nUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCkBAIC0xMzgsNyArMTMwLDcgQEAg
Y29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCi0g
ICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZGlz
cGxheU5hbWUpKQorICAgIGlmIChkaXNwbGF5TmFtZSAmJiBpc0pTU3RyaW5nKGRpc3BsYXlOYW1l
KSkKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGRpc3BsYXlOYW1lKS0+dHJ5R2V0VmFsdWUoKTsK
ICAgICAKICAgICByZXR1cm4gVVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCmluZGV4IGI3NTMzMmE1NzQwMTQyNjAzYjlkZGE5YmQ3ZTRmYTE2Njcz
NjJhNTMuLjk4OGFlMTIxM2U1YjU5Zjg4NWJjMDdmOTc0ODM1ZDIzZTNmNzQ5N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTM1LDcgKzM1LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTmF0
aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwotICAgIGNsYXNzIFZQdHJIYWNr
RXhlY3V0YWJsZTsKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICBjbGFzcyBTcGVjdWxhdGl2ZUpJ
VDsKICAgICBjbGFzcyBKSVRDb21waWxlcjsKQEAgLTY1LDggKzY0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHZpcnR1YWwgfkpTRnVuY3Rpb24oKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJs
ZUFuY2hvcigpOyAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBvcHRpbWl6YXRpb25zIG5vIGxv
bmdlciByZWx5IG9uIHRlc3RpbmcgdnRhYmxlcworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAg
ICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDQsOCAr
MTQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxp
Y2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpOwotCiAgICAgICAgIGJvb2wgaXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBh
cmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXgg
YTUzNWZjMjQ3ZGIyODQ4NjFiZTkzZDhiYWE2MWFmN2Q3NDg4MzAzZS4uMjJlNzY5M2RjZmI2YzEw
MzljMDc0Y2RmNjdhMTg5MjE4ZjUyMmRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDksMTIgKzEwOSw2IEBAIGV4dGVybiBjb25z
dCBIYXNoVGFibGUgcmVnRXhwUHJvdG90eXBlVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxl
IHN0cmluZ1RhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRh
YmxlOwogCi12b2lkKiBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RWUHRyOwotdm9pZCogSlNH
bG9iYWxEYXRhOjpqc0FycmF5VlB0cjsKLXZvaWQqIEpTR2xvYmFsRGF0YTo6anNCeXRlQXJyYXlW
UHRyOwotdm9pZCogSlNHbG9iYWxEYXRhOjpqc1N0cmluZ1ZQdHI7Ci12b2lkKiBKU0dsb2JhbERh
dGE6OmpzRnVuY3Rpb25WUHRyOwotCiAjaWYgQ09NUElMRVIoR0NDKQogLy8gV29yayBhcm91bmQg
Zm9yIGdjYyB0cnlpbmcgdG8gY29hbGVzY2Ugb3VyIHJlYWRzIG9mIHRoZSB2YXJpb3VzIGNlbGwg
dnB0cnMKICNkZWZpbmUgQ0xPQkJFUl9NRU1PUlkoKSBkbyB7IFwKQEAgLTEyNCw1MiArMTE4LDYg
QEAgdm9pZCogSlNHbG9iYWxEYXRhOjpqc0Z1bmN0aW9uVlB0cjsKICNkZWZpbmUgQ0xPQkJFUl9N
RU1PUlkoKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQogI2VuZGlmCiAKLXZvaWQgSlNHbG9iYWxEYXRh
OjpzdG9yZVZQdHJzKCkKLXsKLSAgICAvLyBFbm91Z2ggc3RvcmFnZSB0byBmaXQgYSBKU0FycmF5
LCBKU0J5dGVBcnJheSwgSlNTdHJpbmcsIG9yIEpTRnVuY3Rpb24uCi0gICAgLy8gQ09NUElMRV9B
U1NFUlRTIGJlbG93IGNoZWNrIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgIGNoYXIgc3RvcmFnZVs2
NF07Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNGaW5hbE9iamVjdCkgPD0gc2l6ZW9m
KHN0b3JhZ2UpLCBzaXplb2ZfSlNGaW5hbE9iamVjdF9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdl
KTsKLSAgICBKU0NlbGwqIGpzRmluYWxPYmplY3QgPSBuZXcgKHN0b3JhZ2UpIEpTRmluYWxPYmpl
Y3QoSlNGaW5hbE9iamVjdDo6VlB0clN0ZWFsaW5nSGFjayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlko
KTsKLSAgICBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RWUHRyID0ganNGaW5hbE9iamVjdC0+
dnB0cigpOwotCi0gICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQXJyYXkpIDw9IHNpemVvZihz
dG9yYWdlKSwgc2l6ZW9mX0pTQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAg
SlNDZWxsKiBqc0FycmF5ID0gbmV3IChzdG9yYWdlKSBKU0FycmF5KEpTQXJyYXk6OlZQdHJTdGVh
bGluZ0hhY2spOwotICAgIENMT0JCRVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0Fy
cmF5VlB0ciA9IGpzQXJyYXktPnZwdHIoKTsKLQotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihK
U0J5dGVBcnJheSkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNCeXRlQXJyYXlfbXVzdF9i
ZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAgSlNDZWxsKiBqc0J5dGVBcnJheSA9IG5ldyAoc3Rv
cmFnZSkgSlNCeXRlQXJyYXkoSlNCeXRlQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwotICAgIENM
T0JCRVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHIgPSBqc0J5
dGVBcnJheS0+dnB0cigpOwotCi0gICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTU3RyaW5nKSA8
PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU1N0cmluZ19tdXN0X2JlX2xlc3NfdGhhbl9zdG9y
YWdlKTsKLSAgICBKU0NlbGwqIGpzU3RyaW5nID0gbmV3IChzdG9yYWdlKSBKU1N0cmluZyhKU1N0
cmluZzo6VlB0clN0ZWFsaW5nSGFjayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0ds
b2JhbERhdGE6OmpzU3RyaW5nVlB0ciA9IGpzU3RyaW5nLT52cHRyKCk7Ci0KLSAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoSlNGdW5jdGlvbikgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNG
dW5jdGlvbl9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzRnVuY3Rp
b24gPSBuZXcgKHN0b3JhZ2UpIEpTRnVuY3Rpb24oSlNDZWxsOjpWUHRyU3RlYWxpbmdIYWNrKTsK
LSAgICBDTE9CQkVSX01FTU9SWSgpOwotICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIg
PSBqc0Z1bmN0aW9uLT52cHRyKCk7Ci0KLSAgICAvLyBVbnRpbCB3ZSBmdWxseSByZW1vdmUgb3Vy
IHJlbGlhbmNlIG9uIHZwdHJzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5Ym9keSB0
aGF0IAotICAgIC8vIHdlIHRoaW5rIGhhcyBhIHVuaXF1ZSB2aXJ0dWFsIHBvaW50ZXIgYWN0dWFs
bHkgZG9lcy4KLSAgICBpZiAoanNGaW5hbE9iamVjdFZQdHIgPT0ganNBcnJheVZQdHIKLSAgICAg
ICAgfHwganNGaW5hbE9iamVjdFZQdHIgPT0ganNCeXRlQXJyYXlWUHRyCi0gICAgICAgIHx8IGpz
RmluYWxPYmplY3RWUHRyID09IGpzU3RyaW5nVlB0cgotICAgICAgICB8fCBqc0ZpbmFsT2JqZWN0
VlB0ciA9PSBqc0Z1bmN0aW9uVlB0cgotICAgICAgICB8fCBqc0FycmF5VlB0ciA9PSBqc0J5dGVB
cnJheVZQdHIKLSAgICAgICAgfHwganNBcnJheVZQdHIgPT0ganNTdHJpbmdWUHRyCi0gICAgICAg
IHx8IGpzQXJyYXlWUHRyID09IGpzRnVuY3Rpb25WUHRyCi0gICAgICAgIHx8IGpzQnl0ZUFycmF5
VlB0ciA9PSBqc1N0cmluZ1ZQdHIKLSAgICAgICAgfHwganNCeXRlQXJyYXlWUHRyID09IGpzRnVu
Y3Rpb25WUHRyCi0gICAgICAgIHx8IGpzU3RyaW5nVlB0ciA9PSBqc0Z1bmN0aW9uVlB0cikKLSAg
ICAgICAgQ1JBU0goKTsKLX0KLQogSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhl
YXBTaXplIGhlYXBTaXplKQogICAgIDogZ2xvYmFsRGF0YVR5cGUoZ2xvYmFsRGF0YVR5cGUpCiAg
ICAgLCBjbGllbnREYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCmluZGV4IDEzOWRkNDI1MWQyZjIwNDRhYWZiMDg2ZjdjYmI0ZTU4YWQxYjlmOTAu
LjE2MTlmOTI5NzBlZDc3OWJkYmY0YjZjODJhZGRkYmMwMWRlNDdjMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMDUsMTggKzEwNSwxOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBUeXBlZEFycmF5RGVzY3JpcHRvciB7CiAg
ICAgICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yKCkKLSAgICAgICAgICAgIDogbV92cHRyKDApCisg
ICAgICAgICAgICA6IG1fY2xhc3NJbmZvKDApCiAgICAgICAgICAgICAsIG1fc3RvcmFnZU9mZnNl
dCgwKQogICAgICAgICAgICAgLCBtX2xlbmd0aE9mZnNldCgwKQogICAgICAgICB7CiAgICAgICAg
IH0KLSAgICAgICAgVHlwZWRBcnJheURlc2NyaXB0b3Iodm9pZCogdnB0ciwgc2l6ZV90IHN0b3Jh
Z2VPZmZzZXQsIHNpemVfdCBsZW5ndGhPZmZzZXQpCi0gICAgICAgICAgICA6IG1fdnB0cih2cHRy
KQorICAgICAgICBUeXBlZEFycmF5RGVzY3JpcHRvcihjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5m
bywgc2l6ZV90IHN0b3JhZ2VPZmZzZXQsIHNpemVfdCBsZW5ndGhPZmZzZXQpCisgICAgICAgICAg
ICA6IG1fY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAgICAgICAgICwgbV9zdG9yYWdlT2Zmc2V0
KHN0b3JhZ2VPZmZzZXQpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoT2Zmc2V0KGxlbmd0aE9mZnNl
dCkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIHZvaWQqIG1fdnB0cjsKKyAgICAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgc2l6ZV90IG1fc3RvcmFnZU9m
ZnNldDsKICAgICAgICAgc2l6ZV90IG1fbGVuZ3RoT2Zmc2V0OwogICAgIH07CkBAIC0xOTMsMTMg
KzE5Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdF
eHBTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3Ry
dWN0dXJlOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsKLSAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNGaW5hbE9iamVjdFZQdHI7Ci0gICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIHZvaWQqIGpzQXJyYXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSB2b2lkKiBqc0J5dGVBcnJheVZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIHZvaWQqIGpzU3RyaW5nVlB0cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9p
ZCoganNGdW5jdGlvblZQdHI7Ci0KICAgICAgICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVy
VGFibGU7CiAgICAgICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgICAg
ICBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUgc3Vw
cG9zZWQgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1lbnRz
IHByb3Blcmx5IG1hcmtlZCwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhpcyBs
aXN0IGhhcyBub3RoaW5nIHRvIG1hcmsuCkBAIC0zNDAsNyArMzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZGVmaW5lIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uKHR5cGUsIGNhcGl0YWxpemVk
VHlwZSkgXAogICAgICAgICB2b2lkIHJlZ2lzdGVyVHlwZWRBcnJheURlc2NyaXB0b3IoY29uc3Qg
Y2FwaXRhbGl6ZWRUeXBlIyNBcnJheSosIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKSBcCiAgICAgICAgIHsgXAotICAgICAgICAgICAgQVNTRVJUKCFtXyMjdHlwZSMjQXJy
YXlEZXNjcmlwdG9yLm1fdnB0ciB8fCBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fdnB0ciA9
PSBkZXNjcmlwdG9yLm1fdnB0cik7IFwKKyAgICAgICAgICAgIEFTU0VSVCghbV8jI3R5cGUjI0Fy
cmF5RGVzY3JpcHRvci5tX2NsYXNzSW5mbyB8fCBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1f
Y2xhc3NJbmZvID09IGRlc2NyaXB0b3IubV9jbGFzc0luZm8pOyBcCiAgICAgICAgICAgICBtXyMj
dHlwZSMjQXJyYXlEZXNjcmlwdG9yID0gZGVzY3JpcHRvcjsgXAogICAgICAgICB9IFwKICAgICAg
ICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIHR5cGUjI0FycmF5RGVzY3JpcHRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3I7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNDI5ODVjMTRm
YmIyYTY0MThkNmQ1M2E3MzgyOTFjMTM4MTY4ZGM5Li40MjBiYzg5YzFiZGIyOGI2OGRmZmQxN2M4
MWZiNzg0NGZlN2U0YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMjIsNiArMTIyLDExIEBAIEpTR2xvYmFsT2JqZWN0Ojp+
SlNHbG9iYWxPYmplY3QoKQogICAgIH0KIH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpT
R2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChKU09iamVjdCogdGhpc1ZhbHVlKQogewogICAgIEFTU0VSVChKU0xvY2s6OmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggM2Y5M2NkOGIxODEwMTMzOGM1MmNhY2M4NWEzYWQz
YTAwM2MyYzdkMS4uNzgyZTNhM2MxM2I0MzI1NGY5NDVmYTY5NWNiMjhkMWE5YzA3MGM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0x
OTMsNyArMTkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgfkpTR2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcAppbmRleCA4NWJm
YjdhMzg2NjY0OTMzNjk3ZmZjNjcyNWJjY2E1Y2U1MDM5Y2E0Li44YjJhN2ExZWY1MWUyNGU3MTg2
ZTc2MDBmNGJmMTU2YWU1MjA1ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbFRoaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsVGhpcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTR2xvYmFsVGhpcyk7CitBU1NFUlRfSEFTX1RS
SVZJQUxfREVTVFJVQ1RPUihKU0dsb2JhbFRoaXMpOwogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9i
YWxUaGlzOjpzX2luZm8gPSB7ICJKU0dsb2JhbFRoaXMiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTR2xvYmFsVGhpcykgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAppbmRleCA5MWY5MGQ2MjQwMTk4OWQ4
ODdkYjA2ZmUwMjllNWY3NWEyZjM0MjI2Li42ODI0MDAyOTI3ZGU5MGE4OTNiNDk5MjFhZDQ5NjUw
MzJjMTcxYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFu
T2JqZWN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNOb3RBbk9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihKU05vdEFuT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTTm90QW5PYmplY3Q6
OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNOb3RBbk9iamVjdCkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAppbmRleCBlYTRjMWFkNjY3YTljYTU3ZjU1NWM2MDQ0YTEzM2M0NmFm
NzYyZTM0Li4wNWM2YzI5NTM1ZWYyNWMzZGZiYTA1MjgzNGIxZTdlOGJkYjVmNzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDMsNiArNDMs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPTk9i
amVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU09OT2JqZWN0KTsKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVu
Y1N0cmluZ2lmeShFeGVjU3RhdGUqKTsKQEAgLTQ5NSw3ICs0OTYsNyBAQCBib29sIFN0cmluZ2lm
aWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZpZXIs
IFVTdHJpbmdCdQogICAgIC8vIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZS4KICAgICBp
ZiAoIW1faW5kZXgpIHsKICAgICAgICAgaWYgKG1faXNBcnJheSkgewotICAgICAgICAgICAgbV9p
c0pTQXJyYXkgPSBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3QuZ2V0KCkp
OworICAgICAgICAgICAgbV9pc0pTQXJyYXkgPSBpc0pTQXJyYXkobV9vYmplY3QuZ2V0KCkpOwog
ICAgICAgICAgICAgbV9zaXplID0gbV9vYmplY3QtPmdldChleGVjLCBleGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdbJyk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC02NjksNyArNjcwLDcgQEAg
TkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAg
ICAgICAgICAgIGFycmF5U3RhcnRTdGF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0
YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFzT2Jq
ZWN0KGluVmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNf
aW5mbykpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1
ZSkpIHx8IGFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6ZSgp
ID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IobV9leGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CiAKQEAg
LTY5NCw3ICs2OTUsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1
ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLnJlbW92ZUxhc3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkgJiYg
YXJyYXktPmNhbkdldEluZGV4KGluZGV4KSkKKyAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5
KGFycmF5KSAmJiBhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQogICAgICAgICAgICAgICAgICAg
ICBpblZhbHVlID0gYXJyYXktPmdldEluZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CkBAIC03MTcsNyArNzE4
LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJl
ZCkKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAg
ICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KGFycmF5LCBtX2V4ZWMsIGluZGV4U3RhY2subGFzdCgpKTsKICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxE
YXRhKCksIGFycmF5KSAmJiBhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0KCkpKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGFycmF5KSAmJiBhcnJheS0+Y2FuU2V0
SW5kZXgoaW5kZXhTdGFjay5sYXN0KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkt
PnNldEluZGV4KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVy
ZWRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFycmF5LCBtX2V4ZWMsIGluZGV4
U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKQEAgLTczMCw3ICs3MzEsNyBAQCBORVZFUl9J
TkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAg
ICAgb2JqZWN0U3RhcnRTdGF0ZToKICAgICAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTog
ewogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVCghaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3Qo
aW5WYWx1ZSkpICYmICFhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5m
bykpOworICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUp
KSAmJiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKTsKICAg
ICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkg
PiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKIApAQCAt
Nzk3LDcgKzc5OCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVl
IHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9i
amVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkKKyAgICAgICAgICAg
ICAgICBpZiAoaXNKU0FycmF5KG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6
c19pbmZvKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBhcnJheVN0YXJ0U3RhdGU7CiAgICAg
ICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFN0YXRlOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMTRmMDkzNTk2NzZjNzVlNzNh
ZTU1YjVjYTJhMWYyMzMyNDRiMzJmYi4uOWNjMjk2MTdhZTJhMmU5MzM5NTg0ZTAyNWFlODQwMjJi
MmUwMWZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApA
QCAtNDYsMTUgKzQ2LDIyIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPYmplY3QpOwog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU05vbkZpbmFsT2JqZWN0KTsKIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoSlNGaW5hbE9iamVjdCk7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNU
UlVDVE9SKEpTT2JqZWN0KTsKKwogY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yID0gIkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHku
IjsKIAogY29uc3QgQ2xhc3NJbmZvIEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAwLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTT2JqZWN0KSB9OwogCiBjb25zdCBDbGFzc0luZm8g
SlNGaW5hbE9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0ZpbmFsT2JqZWN0KSB9OwogCi12b2lkIEpTRmluYWxPYmpl
Y3Q6OnZ0YWJsZUFuY2hvcigpCit2b2lkIEpTRmluYWxPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQoreworICAgIGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCktPkpTRmluYWxPYmplY3Q6
On5KU0ZpbmFsT2JqZWN0KCk7Cit9CisKK3ZvaWQgSlNOb25GaW5hbE9iamVjdDo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCiB7Ci0gICAgcHJpbnRmKCJTb21ldGhpbmcgVmlzdWFsIFN0dWRpbyBjYW4n
dCBvcHRpbWl6ZSBhd2F5LlxuIik7CisgICAganNDYXN0PEpTTm9uRmluYWxPYmplY3QqPihjZWxs
KS0+SlNOb25GaW5hbE9iamVjdDo6fkpTTm9uRmluYWxPYmplY3QoKTsKIH0KIAogc3RhdGljIGlu
bGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCkBAIC04MSw4ICs4OCw5IEBAIHZvaWQgSlNPYmplY3Q6OmZpbmFs
aXplKEpTQ2VsbCogY2VsbCkKICAgICBkZWxldGUgW10ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCkt
Pm1fcHJvcGVydHlTdG9yYWdlLmdldCgpOwogfQogCi12b2lkIEpTT2JqZWN0Ojp2dGFibGVBbmNo
b3IoKQordm9pZCBKU09iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0
PEpTT2JqZWN0Kj4oY2VsbCktPkpTT2JqZWN0Ojp+SlNPYmplY3QoKTsKIH0KIAogdm9pZCBKU09i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZjU2OGQ0MmE0NmYy
MThjZmE0ZThiY2U4MjNhMjlkYjk3YTRjNDZlNi4uMzYzZWMzMDYxM2U4Y2Y5Mjc2ZTA4ZjdhM2Y4
ZjgxMTYzOGFmMThkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9y
KCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC0yNDMs
NiArMjQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBl
KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgp
KSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZVN0b3JhZ2UsIHN0YXRpY19jYXN0
PHZvaWQqPihpbmxpbmVTdG9yYWdlKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyArIDEpKTsK
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAg
ICBBU1NFUlQoY2xhc3NJbmZvKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yNTUsMTEgKzI1Niw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlv
dSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRl
IGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93Lgog
ICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSk7Ci0gICAgICAgIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBl
LCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKLSAgICAgICAgICAgIDogSlNDZWxsKFZQ
dHJTdGVhbGluZ0hhY2spCi0gICAgICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGlubGluZVN0
b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpCi0gICAgICAgIHsKLSAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2Yg
dGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmpl
Y3QuCkBAIC0zMTksMTIgKzMxNSw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3JhZ2VDYXBhY2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7
CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KFZQdHJTdGVh
bGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBt
X2lubGluZVN0b3JhZ2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgIAogICAgICAgICBleHBs
aWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkBAIC0zMzUsNiArMzI4LDcgQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmlu
YWxPYmplY3RfaW5saW5lU3QKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIG1faW5saW5lU3RvcmFnZSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZG
U0VUT0YoSlNOb25GaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUp
KSk7CiAgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPT0gSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwor
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKQEAgLTM0OSwxMSArMzQzLDYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3QgQmFzZTsKIAotICAgICAgICBleHBsaWNpdCBK
U0ZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU09iamVj
dChWUHRyU3RlYWxpbmdIYWNrLCBtX2lubGluZVN0b3JhZ2UpCi0gICAgICAgIHsKLSAgICAgICAg
fQotICAgICAgICAKICAgICAgICAgc3RhdGljIEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBK
U0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKTsKQEAgLTM3NCwyMSArMzYzLDMyIEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2Jq
ZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBtX2lubGluZVN0b3Jh
Z2UpOwogICAgICAgICAgICAgQVNTRVJUKCEoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3Qs
IG1faW5saW5lU3RvcmFnZSkgJSBzaXplb2YoZG91YmxlKSkpOwogICAgICAgICAgICAgQVNTRVJU
KHRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc0lu
Zm8oKSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBK
U09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwotCiAg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5s
aW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CiAgICAgfTsK
IAoraW5saW5lIGJvb2wgaXNKU0ZpbmFsT2JqZWN0KEpTQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1
cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbzsKK30KKworaW5s
aW5lIGJvb2wgaXNKU0ZpbmFsT2JqZWN0KEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZh
bHVlLmlzQ2VsbCgpICYmIGlzSlNGaW5hbE9iamVjdCh2YWx1ZS5hc0NlbGwoKSk7Cit9CisKIGlu
bGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpCiB7CiAgICAgQVNT
RVJUKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpID09IE9C
SkVDVF9PRkZTRVRPRihKU05vbkZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAKaW5kZXggZjQzMTA0MjlhNzdiNjYxODBkNDNlZGJhZWEzN2I4ZDY0NjBmOGE1Ny4u
NzIwN2E0YzVjY2NkYmRhMmE3NTA0NTUzMWU5NDliZTFlMDRmZDllZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgcmV0dXJu
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CiB9CiAKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqPihjZWxsKS0+SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IoKTsKK30KKwogSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVu
dGlmaWVyID0gbV9qc1N0cmluZ3NbaV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggOTdhNTAzMjZi
ZGM5ZWNjNGI5ODI0ZTJmNTJjZTZjMjA2MGI1NjRkMi4uY2UyZTQ0ZTgxMWIzYzY0YjI0NWY4OTE1
MDg2MDBjZGY3YTQxNjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtNTIsNyArNTIsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgICAg
ICB9Ci0gICAgICAgIAorCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Cisg
ICAgICAgCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5k
VHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksICZzX2luZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCBk
OTBjNjhjODAxYjYzZTFlOTk3NjU2ODY0Njc0OGQ3NWNmYjA5NGQ3Li4zMDg0ZjNmMjk2NjU1MTA5
NTU1YzU1MjI1OWVjZDU0ODNhZDhhYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcApAQCAtMzQsNiArMzQsMTEgQEAg
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTU3RhdGljU2NvcGVPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTdGF0aWNTY29wZU9iamVjdCkg
fTsKIAordm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sK
KyAgICBqc0Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KGNlbGwpLT5KU1N0YXRpY1Njb3BlT2Jq
ZWN0Ojp+SlNTdGF0aWNTY29wZU9iamVjdCgpOworfQorCiB2b2lkIEpTU3RhdGljU2NvcGVPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RhdGljU2Nv
cGVPYmplY3QqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuaAppbmRleCAyM2EzYWNhZDc4Y2VlNGU3NjA3OWU4OWUyYWE0
NWYwNTVmZDUyZmZmLi5kZTBiODE2MjE3ODk3OWU2MDEwM2FiMzIyNmViMWRiYTAzMjQwYjY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5oCkBAIC02Nyw3ICs2Nyw5IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgICAgICA6IEpT
VmFyaWFibGVPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3Rh
dGljU2NvcGVTdHJ1Y3R1cmUuZ2V0KCksICZtX3N5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0
PFJlZ2lzdGVyKj4oJm1fcmVnaXN0ZXJTdG9yZSArIDEpKQogICAgICAgICB7CiAgICAgICAgIH0K
LSAgICAgICAgCisKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAg
ICAgICBTeW1ib2xUYWJsZSBtX3N5bWJvbFRhYmxlOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9yZWdpc3RlclN0b3JlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5jcHAKaW5kZXggMGU2YTQ4YTA3YWY5ZTNiOWI3M2YyM2Q0YTgyNGQ5ZWFm
ZmEwODdkZS4uNjJjYzU1Y2ZjYzAxODNiNWUzMDM4MWE0YzExNGM3ZjY0ZmQwYzBiZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAtNDUsOSArNDUsMTAg
QEAgdm9pZCBKU1N0cmluZzo6Um9wZUJ1aWxkZXI6OmV4cGFuZCgpCiAgICAgYXBwZW5kKGpzU3Ry
aW5nKTsKIH0KIAotSlNTdHJpbmc6On5KU1N0cmluZygpCit2b2lkIEpTU3RyaW5nOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNT
dHJpbmdWUHRyKTsKKyAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+
KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKIH0KIAogdm9p
ZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggN2NmODM4
MjE5YTViYTUzZjE3ZmFiZDg5MGRkZTJiYzJlMmQyMDJjNC4uZDUxYTIzZmYyODM2YzlkNzY5YTJl
NzVjMWI3YTIxZTRmMzZkMjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCkBAIC02OSw2ICs2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KwogICAgICAgICBjbGFzcyBSb3BlQnVpbGRlciB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAg
ICAgIFJvcGVCdWlsZGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTE5Nyw4ICsxOTks
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5KU1N0cmluZygpOwotCiAgICAgICAgIGNvbnN0IFVT
dHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKGlzUm9wZSgpKQpAQCAtMjQzLDExICsyNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNTdHJpbmcoVlB0clN0ZWFsaW5nSGFja1R5cGUpIAot
ICAgICAgICAgICAgOiBKU0NlbGwoVlB0clN0ZWFsaW5nSGFjaykKLSAgICAgICAgewotICAgICAg
ICB9Ci0KICAgICAgICAgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lk
IHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKQEAgLTI3OSwxNiArMjc0LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7CiAKLSAg
ICAvLyBXaGVuIGFuIG9iamVjdCBpcyBjcmVhdGVkIGZyb20gYSBkaWZmZXJlbnQgRExMLCBNU1ZD
IGNoYW5nZXMgdnB0ciB0byBhICJsb2NhbCIgb25lIHJpZ2h0IGFmdGVyIGludm9raW5nIGEgY29u
c3RydWN0b3IsCi0gICAgLy8gc2VlIDxodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvbWlj
cm9zb2Z0LnB1YmxpYy52Yy5sYW5ndWFnZS9tc2cvNTVjZGNlZmVhZjc3MDIxMj4uCi0gICAgLy8g
VGhpcyBicmVha3MgaXNKU1N0cmluZygpLCBhbmQgd2UgZG9uJ3QgbmVlZCB0aGF0IGhhY2sgYW55
d2F5LCBzbyB3ZSBjaGFuZ2UgdnB0ciBiYWNrIHRvIHByaW1hcnkgb25lLgotICAgIC8vIFRoZSBi
ZWxvdyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBieSBhbnkgaW5saW5lIGZ1bmN0aW9uIHRoYXQg
aW52b2tlcyBhIEpTU3RyaW5nIGNvbnN0cnVjdG9yLgotI2lmIENPTVBJTEVSKE1TVkMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKQotICAgIGlubGluZSBKU1N0cmluZyogZml4
dXBWUHRyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNTdHJpbmcqIHN0cmluZykgeyBzdHJp
bmctPnNldFZQdHIoZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKTsgcmV0dXJuIHN0cmluZzsgfQot
I2Vsc2UKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGZpeHVwVlB0cihKU0dsb2JhbERhdGEqLCBKU1N0
cmluZyogc3RyaW5nKSB7IHJldHVybiBzdHJpbmc7IH0KLSNlbmRpZgotCiAgICAgaW5saW5lIEpT
U3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZh
bHVlLmFzQ2VsbCgpLT5pc1N0cmluZygpKTsKQEAgLTMwNCw3ICsyODksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2Jh
bERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmcoJmMsIDEpLmltcGwo
KSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmlu
ZygmYywgMSkuaW1wbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xl
Q2hhcmFjdGVyU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5z
aWduZWQgb2Zmc2V0KQpAQCAtMzE0LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBVQ2hhciBjID0gc1tvZmZzZXRdOwogICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0
ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsKLSAgICAgICAgcmV0dXJuIGZpeHVw
VlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBs
OjpjcmVhdGUocy5pbXBsKCksIG9mZnNldCwgMSkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5n
OjpjcmVhdGUoKmdsb2JhbERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZShzLmltcGwoKSwgb2Zmc2V0
LCAxKSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmco
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBjaGFyKiBzKQpAQCAtMzIyLDEzICszMDcs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChzKTsKICAgICAgICAgQVNTRVJU
KHNbMF0pOwogICAgICAgICBBU1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIo
Z2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZyhzKS5pbXBs
KCkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJp
bmcocykuaW1wbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCiAgICAg
ewogICAgICAgICBBU1NFUlQocy5sZW5ndGgoKSA+IDEpOwotICAgICAgICByZXR1cm4gZml4dXBW
UHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKSk7
CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBzLmltcGwoKSk7
CiAgICAgfQogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBKU1N0cmluZzo6Z2V0SW5kZXgoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpKQpAQCAtMzUwLDcgKzMzNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAg
ICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQ
dHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKTsK
KyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKTsK
ICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzc2
LDcgKzM2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0
ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCks
IG9mZnNldCwgbGVuZ3RoKSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090
aGVyT3duZXIoKmdsb2JhbERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNl
dCwgbGVuZ3RoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzkxLDcgKzM3Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAg
ICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIo
Z2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIFN0
cmluZ0ltcGw6OmNyZWF0ZShzLmltcGwoKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1w
bDo6Y3JlYXRlKHMuaW1wbCgpLCBvZmZzZXQsIGxlbmd0aCkpOwogICAgIH0KIAogICAgIGlubGlu
ZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIHMpCkBAIC00MDQsMTIgKzM4OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhn
bG9iYWxEYXRhLCBjKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2Jh
bERhdGEsIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBzLmltcGwo
KSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2Jh
bERhdGEsIHMuaW1wbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5n
QnVpbGRlcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgewotICAgICAgICByZXR1cm4g
Zml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGVOdWxsKCpnbG9iYWxEYXRhKSk7
CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlTnVsbCgqZ2xvYmFsRGF0YSk7CiAgICAg
fQogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykg
eyByZXR1cm4ganNFbXB0eVN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpKTsgfQpAQCAtNDQ4LDcg
KzQzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpT
VmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xv
YmFsRGF0YS0+anNTdHJpbmdWUHRyOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1Zh
bHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0g
JkpTU3RyaW5nOjpzX2luZm87IH0KIAogICAgIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFu
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCmluZGV4IDlmMzhlYTk4NzJjNGY3MmIx
MTgzYWQxYmU4Y2U0ZmZmYTgwMDU5NzcuLjcwNmUzZGViYmMzY2Y2YjZmYTJiMWZmZTY5MzNmZDk1
MDljZTJhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuY3BwCkBAIC0zNyw4ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1K
U1ZhcmlhYmxlT2JqZWN0Ojp+SlNWYXJpYWJsZU9iamVjdCgpCit2b2lkIEpTVmFyaWFibGVPYmpl
Y3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0
Kj4oY2VsbCktPkpTVmFyaWFibGVPYmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCk7CiB9CiAKIGJv
b2wgSlNWYXJpYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAppbmRleCBlNDlmYjcxZGYy
ZWNiOWRmNzk2YjJlN2I4ZGVkOWU3Njg0YWFkODMwLi44YTVjNWEwZjMxNGY5MmQ2MmQzZDVlNTcz
NjVlYWEzYjVmZGQ0YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJv
bFRhYmxlOyB9CiAKLSAgICAgICAgdmlydHVhbCB+SlNWYXJpYWJsZU9iamVjdCgpOworICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBOT19SRVRV
Uk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNw
cAppbmRleCBjYTViZDg3NWMzZDBhNmNiZjVhODgyYjkxZTU2YTQ4OWNiOWQ3NWQyLi5mOGY1NzI3
ZDgyY2Q2NzY5NjIyNjgxOGVlZTc5MGQ5Y2Q0MmQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKQEAgLTI1LDEwICsyNSw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBwZXJP
YmplY3QpOwotCi1KU1dyYXBwZXJPYmplY3Q6On5KU1dyYXBwZXJPYmplY3QoKQotewotfQorQVNT
RVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNXcmFwcGVyT2JqZWN0KTsKIAogdm9pZCBKU1dy
YXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3Jh
cHBlck9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2Jq
ZWN0LmgKaW5kZXggNzM3MTNjMGIzNGM2NDI0MmE4NGYyYWVkZDE3ZDUxNTU5NmExMGU0Ni4uNjVi
NGJkYjdmNjFlMDAwMTExNTJlMWEwZDVhY2UxZWFiNzc3ZDk3YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIHZpcnR1YWwgfkpTV3JhcHBlck9iamVjdCgp
OwotICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4g
bV9pbnRlcm5hbFZhbHVlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuY3BwCmluZGV4IDAwNjU1OWRkZGE0ODJhYmZjYTliZWQxYTBjMTQ1YTRhOTMw
Njg3MmUuLjU4YjA5MTIyZDRhYzJkZWU3MmU1NmNjYWVlNDMyYjU1ZmQ0MDZjY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC01OSw2ICs1OSw4
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4o
RXhlY1N0YXRlKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihNYXRoT2JqZWN0KTsKKwogY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5m
byA9IHsgIk1hdGgiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om1h
dGhUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXRoT2JqZWN0KSB9OwogCiAvKiBTb3VyY2Ug
Zm9yIE1hdGhPYmplY3QubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGRlOTI3ODQ4YWQ4ZTJl
Y2U4YzAwM2JlN2FkYmMxYWNjNGY0ZmM2Ny4uYjZhZmY5MTZlNGRkNGI4YjEyMzk2NjQ2M2NkNTg2
ODI3M2E4YjBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cik7CiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDA4NGM2M2Yx
N2U4ZDMxMGZjZjUzYzcxMzc1NmExYjhhZDdlNDdjMDIuLmU4NjNlODYzMDk4MjM4N2IyYTIzZWEy
ODE5ZjdiOGFkMGE4ZDVlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTQyLDYgKzQyLDggQEAgc3RhdGljIEpTVmFs
dWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJikKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNU
UlVDVE9SKE51bWJlckNvbnN0cnVjdG9yKTsKKwogY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8s
IDAsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJM
RShOdW1iZXJDb25zdHJ1Y3RvcikgfTsKIAogLyogU291cmNlIGZvciBOdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5j
cHAKaW5kZXggYjc1MTA1M2ZiOTY2YmRlODJjMGNkYWJlZTg0MTRiYzUwOWE4NWYyMS4uMWZlYTI1
NDY0N2E0ZWQwMzgyNjY5MTc2NTU0MjU4MGU5NGIzZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJPYmplY3QpOwor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTnVtYmVyT2JqZWN0KTsKIAogY29uc3QgQ2xh
c3NJbmZvIE51bWJlck9iamVjdDo6c19pbmZvID0geyAiTnVtYmVyIiwgJkpTV3JhcHBlck9iamVj
dDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bWJlck9iamVjdCkgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAK
aW5kZXggM2JjYjliYjVkY2YzNDkxOGM3MWZmNjYxOTU0Y2VhMmY5ZjYyNzVhNy4uNDYxMmI1NmQy
YmE1NWU0Yzk4M2MyMzM2MmI5NjE1YWY4MzQwM2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC02OSw2ICs2OSw3IEBAIGNv
bnN0IENsYXNzSW5mbyBOdW1iZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk51bWJlciIsICZOdW1i
ZXJPYmplY3Q6OnNfaW5mbywgMCwKICovCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVt
YmVyUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE51bWJlclByb3Rv
dHlwZSk7CiAKIE51bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJPYmplY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTk1MmNlODA5Yzg3ZDJjMzgwNWFjMmI5N2Nh
NjZjMDY4N2RlYzM1MC4uNjVkMjhjMThjMzMzYjNjMzgyYWFkMjA0OTFmOTk0MjdkNTQ2MWIzZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcApAQCAtNTUsNiArNTUsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE9iamVjdENvbnN0cnVj
dG9yKTsKKwogY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6b2JqZWN0
Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmplY3RDb25zdHJ1Y3Rvcikg
fTsKIAogLyogU291cmNlIGZvciBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggYTFlNDk2
NjM0NjZkMzQwZTVjZjIxMTY5MWYwODUyNGFlNTQyMmM5MS4uM2Y0ZGMxOWRiMmEyMmFlOTM4NTY1
NDRkMTQ3Yzg0NjY3NTg5YjFiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC00NCw2ICs0NCw4IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNT
dGF0ZSopOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNU
T1IoT2JqZWN0UHJvdG90eXBlKTsKKwogY29uc3QgQ2xhc3NJbmZvIE9iamVjdFByb3RvdHlwZTo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0
YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmplY3RQcm90
b3R5cGUpIH07CiAKIC8qIFNvdXJjZSBmb3IgT2JqZWN0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggOTdkYWUzZTA4YmY2MmMy
OTRiOWI2ODY2Y2ZjYjc3YTM1Y2M4NGRmNC4uY2EyMTc0ZmExZTcyMDc4OTMzYzM1M2IxNDc1Zjhh
ZTA5OTY2MGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKChsZW5ndGgx
ICsgbGVuZ3RoMikgPCBsZW5ndGgxKQogICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjKTsKIAotICAgICAgICByZXR1cm4gZml4dXBWUHRyKCZnbG9iYWxEYXRhLCBK
U1N0cmluZzo6Y3JlYXRlKGdsb2JhbERhdGEsIHMxLCBzMikpOworICAgICAgICByZXR1cm4gSlNT
dHJpbmc6OmNyZWF0ZShnbG9iYWxEYXRhLCBzMSwgczIpOwogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHUx
LCBjb25zdCBVU3RyaW5nJiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCkBAIC02OSw3ICs2OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoKGxlbmd0aDEgKyBsZW5ndGgyICsgbGVuZ3Ro
MykgPCBsZW5ndGgzKQogICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKIAotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpj
cmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCB1MSksIGpzU3Ry
aW5nKGdsb2JhbERhdGEsIHUyKSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgdTMpKSk7CisgICAgICAg
IHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZ2xv
YmFsRGF0YSwgdTEpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCB1MiksIGpzU3RyaW5nKGdsb2JhbERh
dGEsIHUzKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNvdW50KQpAQCAtMjMw
LDggKzIzMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPCB2Mi5h
c051bWJlcigpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKTsKLSAgICAgICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdjEp
ICYmIGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdjIpKQorICAgICAgICBpZiAoaXNKU1N0cmluZyh2
MSkgJiYgaXNKU1N0cmluZyh2MikpCiAgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT52
YWx1ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpOwogCiAgICAg
ICAgIGRvdWJsZSBuMTsKQEAgLTI2NSw4ICsyNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIHJldHVy
biB2MS5hc051bWJlcigpIDw9IHYyLmFzTnVtYmVyKCk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBpZiAoaXNK
U1N0cmluZyhnbG9iYWxEYXRhLCB2MSkgJiYgaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2MikpCisg
ICAgICAgIGlmIChpc0pTU3RyaW5nKHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkKICAgICAgICAgICAg
IHJldHVybiAhKGFzU3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFzU3RyaW5nKHYxKS0+
dmFsdWUoY2FsbEZyYW1lKSk7CiAKICAgICAgICAgZG91YmxlIG4xOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggMDVkZjMyYjE1MzYzYTdkMmIyMGZiOGVlNDc5
NmExYTVmYjAwZDBlNy4uNTk0YjIyNTkyMGQ5NDg0YTQxOTU4Y2NmYWVmM2IxYTg1MGJkOWI2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yNDgsMTEgKzI0
OCwxMyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQogICAgICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5z
OwogfQogCi1SZWdFeHA6On5SZWdFeHAoKQordm9pZCBSZWdFeHA6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogeworICAgIFJlZ0V4cCogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHAqPihjZWxsKTsK
ICNpZiBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAgICAgUmVnRXhwRnVuY3Rpb25hbFRlc3RD
b2xsZWN0b3I6OmdldCgpLT5jbGVhclJlZ0V4cCh0aGlzKTsKICNlbmRpZgorICAgIHRoaXNPYmpl
Y3QtPlJlZ0V4cDo6flJlZ0V4cCgpOwogfQogCiBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlV2l0aG91
dENhY2hpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
U3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmgKaW5kZXggYWEzYTYxZjQ2ZjljMWEzNGY3MzExNmE4YWY0MWZjZTRjMDQ2NDA2ZS4uNjVl
YjQ4NDk5OTJjYTVlNmUxODlmZTI1NDJhZGM4YTc1ZmI5ZGRiOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cCogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsK
LSAgICAgICAgflJlZ0V4cCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdH
bG9iYWw7IH0KICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
cyAmIEZsYWdJZ25vcmVDYXNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDNkMmZkMmMwZWVhYTA0NTgxYzU4ZDZl
OTE2MWY0YTBmZTliMWY4OS4uYTI4NzM3N2EyMmU5MmVlNmQwYWUxNWQyOTI0Yjc1OGQ3MmRlMzJi
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcApAQCAtMTE1LDYgKzExNSwxMSBAQCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUAog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSB8IERvbnRFbnVtKTsKIH0KIAordm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCit7CisgICAganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oY2VsbCktPlJlZ0V4
cENvbnN0cnVjdG9yOjp+UmVnRXhwQ29uc3RydWN0b3IoKTsKK30KKwogUmVnRXhwTWF0Y2hlc0Fy
cmF5OjpSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiBleGVjKQogICAgIDogSlNBcnJheShl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlKCkpCiB7CkBAIC0xNDAsNiArMTQ1LDExIEBAIFJlZ0V4cE1hdGNo
ZXNBcnJheTo6flJlZ0V4cE1hdGNoZXNBcnJheSgpCiAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFJl
Z0V4cENvbnN0cnVjdG9yUHJpdmF0ZSo+KHN1YmNsYXNzRGF0YSgpKTsKIH0KIAordm9pZCBSZWdF
eHBNYXRjaGVzQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxSZWdF
eHBNYXRjaGVzQXJyYXkqPihjZWxsKS0+UmVnRXhwTWF0Y2hlc0FycmF5Ojp+UmVnRXhwTWF0Y2hl
c0FycmF5KCk7Cit9CisKIHZvaWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpmaWxsQXJyYXlJbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkID0g
c3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKj4oc3ViY2xhc3NEYXRhKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgK
aW5kZXggNWY5MzBlYjg5NTdkMTVhZmM1YjAzYjM4MzE2MGRkYjUwOWE0Y2JlMy4uN2ZiODhkMmI0
NDZhMmE0ZjE2ZTNmNWE3YTY4ODVjNWY1ZGQ4YWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCkBAIC05OCw2ICs5OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCmluZGV4IDFjYzg5OGUyNTZkNTE2YTA0
NTg2MmJjMDE1MTNiZTY3ZmE4ZWE4NTkuLjFjMTE3YjBkODViNWM2OTY0ZjBmYjNjZTIzOTNlZjVm
YmYwZGU5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmVnRXhwLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGN0b3JQcml2
YXRlKTsKICAgICAgICAgICAgIHJldHVybiByZWdFeHA7CiAgICAgICAgIH0KLSAgICAgICAgdmly
dHVhbCB+UmVnRXhwTWF0Y2hlc0FycmF5KCk7CisgICAgICAgIH5SZWdFeHBNYXRjaGVzQXJyYXko
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDcyMTNk
YzI3YzE1NTc3Y2IyODViYjQyODA4NzAzODM4NmJlZmM4NDMuLjQ1NTNmN2FkMGQ1MmNlOGYyZWRh
YTIyOTdhMzA1N2UyYTI2NjdjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzUsOCArNzUsOSBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1SZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3QoKQor
dm9pZCBSZWdFeHBPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxS
ZWdFeHBPYmplY3QqPihjZWxsKS0+UmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2JqZWN0KCk7CiB9CiAK
IHZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCmluZGV4IGExMTdmMzYyYzNlMzNhODc5MTMyYTZjYTIyYjFiZWY4NWRhYzdmNTkuLmVlOThi
NjYwMjNmODMwZjliNjRlZGYxZDY4MzI1ZWYyZTQ1MzJkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC00NCw4ICs0NCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgflJlZ0V4cE9iamVjdCgpOwotCiAgICAgICAgIHZvaWQgc2V0UmVnRXhwKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByKSB7IGQtPnJlZ0V4cC5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgcik7IH0KICAgICAgICAgUmVnRXhwKiByZWdFeHAoKSBjb25zdCB7IHJldHVybiBk
LT5yZWdFeHAuZ2V0KCk7IH0KIApAQCAtNzksNiArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFJlZ0V4cCopOwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKaW5k
ZXggNzlmMmE3YTQ4NGE1MzAxMTUzZjg1MzdlM2E4ZDFlYTUzOTk1ZmI3Mi4uMDk5ZjdmZGU2OGJi
YmM3NmI3N2Y0Mjk2ZjZlODc2YTFmNzFmOGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKQEAgLTI5LDkgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLVNjb3BlQ2hhaW5Ob2RlOjp+U2NvcGVDaGFpbk5vZGUoKQotewotfQorQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoU2NvcGVDaGFpbk5vZGUpOwogCiAjaWZuZGVmIE5ERUJVRwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggNDgzODVk
MGNiZTFhNDg4YWU3OWNhYTZhYTMxNTgxZDc0NjAwYzY4Zi4uZmRlNjkwZWI0ZDhkZDFiZjE5YzU3
YTI3YmMzODE1YjVkYTQwN2M2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlQ2hhaW4uaApAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+U2NvcGVDaGFpbk5vZGUoKTsKLQogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cAppbmRleCAyMTI4M2RiZDIyNDI1YTIwNzgwYjMzYTFhMzFlNzdiMjgzYjI2ZmFkLi5mYmQ5ZDVm
YmQ5N2NjMDNiYjRkNzZlYjIwY2RhNDliOGNkMjU3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC0yOCw2
ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJV
Q1RPUihTdHJpY3RFdmFsQWN0aXZhdGlvbik7CisKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RFdmFs
QWN0aXZhdGlvbjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShTdHJpY3RFdmFsQWN0aXZhdGlvbikgfTsKIAogU3RyaWN0RXZhbEFj
dGl2YXRpb246OlN0cmljdEV2YWxBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRl
eCA5NjU3MGIyYzA1YWQ5MWE5ZWJjY2U1OTkxNzViZjg4YjNlNGVhYTFjLi5kMmY3NWEwNjBiNTVj
NGY3MWM2OWFmYjZmNTI1OGZlMjkwODU4MjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC00Niw2ICs0Niw3IEBAIGNv
bnN0IENsYXNzSW5mbyBTdHJpbmdDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
SW50ZXJuYWxGdW5jdGlvbjo6c19pCiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0
cmluZ0NvbnN0cnVjdG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ0Nv
bnN0cnVjdG9yKTsKIAogU3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50
ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDNlZWQyNjcyMzEzNDE0YjEz
ZGFmYjRmZDk2MjkyYTcyM2U4ZDZmOGQuLjRhMjQ2OThmYjE2OWU0YTY1OTUwOGEyOGFhM2U3OWJj
MWNjZjVlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoU3RyaW5nT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVD
VE9SKFN0cmluZ09iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5m
byA9IHsgIlN0cmluZyIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShTdHJpbmdPYmplY3QpIH07CiAKQEAgLTM0LDEwICszNSw2IEBAIFN0cmluZ09i
amVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0Ojp2dGFibGVBbmNob3IoKQotewot
fQotCiB2b2lkIFN0cmluZ09iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1N0cmluZyogc3RyaW5nKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAppbmRleCBkNjVlY2M1NDMyYmExOTVkOWE2ZTQzODdlMmJmMDgxZTVkMjQwNDg5Li44MDZkMDdi
M2Q5MjhlYjEwNTc2MTlhMzgyYWZiYzllYzcxZDBhYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtMzAsOCArMzAsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwotCiAgICAgICAgIHN0YXRp
YyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0
cmluZyhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCmluZGV4IDNkZTg5NTM0MjI2N2ZkNzlhZGNiNDFhYTIxNTY3NTZjNGVmYWQ2
MzIuLjliZjE4ZGU2OWFlNmE2MWRiZDE2YTllM2RhNWY0ZjAzOGI1ZGQ5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNDUs
NiArNDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKFN0cmluZ1Byb3RvdHlwZSk7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNT
dGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5k
ZXggNmI0Y2EyYmZmYjRjOTYxOTY2MDMxMGMyYWFhYzEwOTFkYjI3Njc3Ny4uZGRhOGM3M2U5MmRm
NmQxMzQ4MDA5NGQyNmE1MjgzYzExOTdlMzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yMTgsOCArMjE4LDkgQEAgU3RydWN0dXJlOjpTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3Vz
KQogICAgICAgICBtX2dsb2JhbE9iamVjdC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMt
Pm1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKIH0KIAotU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKK3Zv
aWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8U3RydWN0
dXJlKj4oY2VsbCktPlN0cnVjdHVyZTo6flN0cnVjdHVyZSgpOwogfQogCiB2b2lkIFN0cnVjdHVy
ZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGUzNzJiMjAyNjVmZWMw
NDJjNDgwZTA5ZTM4N2E2YWY5MjM5YjhjNGMuLjkyZTFiM2IzMzA5ODcyMmE2YzA4MWZhOWM4ZmJj
YzVjZjk4MmQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU3RydWN0dXJl
KiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwog
Ci0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAK
ICAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUpOwpAQCAtMzM1LDE2ICszMzUsMTggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgaW5saW5lIHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpID09IHRoaXMtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0luZm8o
KSk7CiAgICAgICAgIG1fc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUp
OwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZv
KCkgY29uc3QKKyAgICBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OnZhbGlkYXRlZENs
YXNzSW5mbygpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7CisgICAg
ICAgIEFTU0VSVChtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKSA9PSBt
X2NsYXNzSW5mbyk7CiAjZWxzZQotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpOworICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fY2xhc3NJ
bmZvKTsKICNlbmRpZgorICAgICAgICByZXR1cm4gbV9jbGFzc0luZm87CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNDZWxsKiBjZWxs
KQpAQCAtMzgwLDYgKzM4MiwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAorICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IG1fY2xhc3NJbmZvKHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwg
dGhpcywgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6
OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQorICAgIHsKKyNpZiBFTkFCTEUoR0NfVkFMSURB
VElPTikKKyAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3QoKSk7
CisgICAgICAgIGdsb2JhbERhdGEuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKKyAgICAg
ICAgaWYgKHN0cnVjdHVyZSkKKyNlbmRpZgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0RWFy
bHlWYWx1ZShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpOworICAgICAgICBtX2NsYXNzSW5m
byA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7CisgICAgICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9m
IGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KKyAgICAgICAgQVNTRVJU
KG1fc3RydWN0dXJlIHx8ICFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0cnVjdHVyZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2EwODU2
OTcwY2I0NGJlYWQwMWIwNGNkYjc5Mjg1YzY1MmFhMTA2Zi4uYWZiMmQ5NTAxODg2N2Y5ZGI3ZjQ0
MWYyOGM4OTNiMTBlMmE2MDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmNwcApAQCAtMzksOCArMzksOSBAQCBTdHJ1Y3R1cmVDaGFpbjo6
U3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKIH0KIAotU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCit2b2lkIFN0
cnVjdHVyZUNoYWluOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8U3RydWN0
dXJlQ2hhaW4qPihjZWxsKS0+U3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpOwogfQog
CiB2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAppbmRleCAyODFmNjAyNGU0ZTZkNGM3OWJiMzU5YzBkMTdhY2M1MzE0MGE0NDEw
Li4wMWE1OWJmMTk3MjExMWQxZDMzZmRiYTExMDQ0MTdiMDg0NDE1MjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTc1LDcgKzc1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmVDaGFp
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7
CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAppbmRleCBkNGY1ZDgwOTg1ZGI3YTkxNTY0Mjk4
ODNmMDUzZjIxYTM3YjMyMjExLi4yYjNkNzk0YTRkN2UwMjI3Y2VlMDg2MDVlN2ZkODYwZDdiNDQ5
NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzgzLDQgKzM4
MywxMCBAQCB3aGlsZSAoMCkKICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmpl
Y3QsIGNsYXNzSW5mbykgZG8geyAodm9pZClvYmplY3Q7ICh2b2lkKWNsYXNzSW5mbzsgfSB3aGls
ZSAoMCkKICNlbmRpZgogCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjZGVmaW5lIEFTU0VSVF9IQVNf
VFJJVklBTF9ERVNUUlVDVE9SKGtsYXNzKSBDT01QSUxFX0FTU0VSVChfX2hhc190cml2aWFsX2Rl
c3RydWN0b3Ioa2xhc3MpLCBrbGFzcyMjX2hhc190cml2aWFsX2Rlc3RydWN0b3JfY2hlY2spCisj
ZWxzZQorI2RlZmluZSBBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihrbGFzcykKKyNlbmRp
ZgorCiAjZW5kaWYgLyogV1RGX0Fzc2VydGlvbnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1Vz
ZXJPYmplY3RJbXAuY3BwCmluZGV4IDhlYTVkMjk1MzBmZDY4MWMwZGY2MjJmNjA0MjQ3YjI1ZDUy
ZTQzNWIuLjY4MDBmZGY0NGFmZjEyN2NlMDBlNjFiNTI0Mjg0NGI5MzAxNWM3YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTQ2LDYgKzQ2LDExIEBAIFVzZXJP
YmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCkKICAgICAgICAgZkpTVXNlck9iamVjdC0+UmVsZWFz
ZSgpOwogfQogCit2b2lkIFVzZXJPYmplY3RJbXA6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIGpzQ2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCktPlVzZXJPYmplY3RJbXA6On5Vc2VyT2Jq
ZWN0SW1wKCk7Cit9CisKIENhbGxUeXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2Vs
bCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJbXAqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8VXNlck9iamVjdEltcCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9V
c2VyT2JqZWN0SW1wLmgKaW5kZXggZDY0OGE5NWJiNTIxOGM5ZjA5NDk3OGI4NjVjMmY4YzFkM2Q3
NTdlZC4uMDY3OTBlZDQ2MjYzMmQ0NTRkN2M1MTI5YWYyNWVjZTk0NGJlYjRjOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+VXNlck9iamVj
dEltcCgpOworICAgIH5Vc2VyT2JqZWN0SW1wKCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGI4NGMzZDJmMDBlYTFjZGEyM2MyN2EwYzZmNzI1YmZkNzUxMzFlYTMu
LjFmNDYxM2EzZWQzMmU0MDA2ODE3MTdmZmI5ZTE2YWE2MGFlNWVlN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0yNjQsNyArMjY0LDcgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2UyN2No
ZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZ0V2CiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTVj
bG9zZUV2CiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTlzZXRDbGllbnRFUE5TXzE4SWNvbkRh
dGFiYXNlQ2xpZW50RQogX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2VDMUV2Ci1fX1pON1dlYkNv
cmUxMkpTRE9NV3JhcHBlcjM0dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUV2Citf
X1pON1dlYkNvcmUxMkpTRE9NV3JhcHBlcjZzX2luZm9FCiBfX1pON1dlYkNvcmUxMlBvcHVwTWVu
dU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0
MTJwYWdlUHJvcGVydHlFUE5TXzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4
dDEzbnVtYmVyT2ZQYWdlc0VQTlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKQEAgLTEyNzYsNiAr
MTI3Niw3IEBAIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJh
bmdlRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1l
bnRFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRp
dGFibGVFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjVpc0FsbEVOU18yN0VkaXRp
bmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0
MjJzY3JpcHRFeGVjdXRpb25Db250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNz
aW9uMTNtYXRjaGVkTGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uNW1h
dGNoRVJLTjNXVEY2U3RyaW5nRWlQaQogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb245
c2VhcmNoUmV2RVJLTjNXVEY2U3RyaW5nRQpAQCAtMTQ0MCw3ICsxNDQxLDYgQEAgX19aTks3V2Vi
Q29yZTlQYWdlQ2FjaGUxMGZyYW1lQ291bnRFdgogX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUyMWF1
dG9yZWxlYXNlZFBhZ2VDb3VudEV2CiBfX1pOSzdXZWJDb3JlOVRyZWVTY29wZTE0Z2V0RWxlbWVu
dEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aVFZON1dlYkNvcmUxMkNocm9tZUNsaWVu
dEUKLV9fWlRWTjdXZWJDb3JlMTJKU0RPTVdyYXBwZXJFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRh
dGFiYXNlQmFzZUUKIF9fWlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdX
ZWJDb3JlMThQbGF0Zm9ybVN0cmF0ZWdpZXNFCkBAIC0xNzIzLDEyICsxNzIzLDEzIEBAIF9fWk43
V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnRFaQogCiAjaWYgVVNFKFBM
VUdJTl9IT1NUX1BST0NFU1MpCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDExZ2V0Q2FsbERhdGFF
UE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTJ2dGFi
bGVBbmNob3JFdgogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18x
MkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9k
MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1l
TWV0aG9kNnNfaW5mb0UKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kN2Rlc3Ryb3lFUE5TXzZKU0Nl
bGxFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185
U3RydWN0dXJlRVJOM1dURjZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCitfX1pO
M0pTQzEzUnVudGltZU1ldGhvZEQyRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTBSb290T2JqZWN0RDFF
dgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxEYXRhRVBOU182SlND
ZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDEyZGVm
YXVsdFZhbHVlRVBLTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJp
bWl0aXZlVHlwZUUKQEAgLTE3NDAsNiArMTc0MSw3IEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50
aW1lT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3Rh
CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4
UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QzcHV0
RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVl
RVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
NnNfaW5mb0UKK19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0N2Rlc3Ryb3lFUE5TXzZK
U0NlbGxFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdEMyRVBOU185RXhlY1N0YXRl
RVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRU4zV1RGMTBQYXNzUmVmUHRySU5T
MF84SW5zdGFuY2VFRUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0RDJFdgogX19a
TjNKU0M4QmluZGluZ3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVPYmplY3RFUE5TXzlFeGVjU3Rh
dGVFCkBAIC0xNzQ3LDcgKzE3NDksNiBAQCBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZUMyRU4z
V1RGMTBQYXNzUmVmUHRySU5TMF8xMFJvb3RPYmplY3RFRUUKIF9fWk4zSlNDOEJpbmRpbmdzOElu
c3RhbmNlRDJFdgogX19aTjdXZWJDb3JlMTNJZGVudGlmaWVyUmVwN2lzVmFsaWRFUFMwXwogX19a
TjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTZjcmVhdGVSb290T2JqZWN0RVB2Ci1fX1pUVk4z
SlNDMTNSdW50aW1lTWV0aG9kRQogI2VuZGlmCiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IDE3OGIxMzAz
NjQ0NzBlMDM4Y2UwZTI5YWI4NmEyNzkwMGMxMmY4NGMuLjEyNzUwMjkyM2QxNzk3M2IzNTcyYjA5
Y2ZjYzFjOTI5MmIyNWZkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTE1
NCw3ICsxNTQsNyBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRM
aW5lRGFzaChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoIWlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSkpCisg
ICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBEYXNoQXJy
YXkgZGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmlu
ZGV4IDU5YmQ5ZjI5ZTE0MTc1ZjVlYjIwZTdkZWJhYzgxMjUzZWIxMTkxNzYuLjJmNDk5OTRjZWZj
NmQ3NDA5YjQ0ZGU5ZTQ0MjczODQyNGI4OGQxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVD
VE9SKERPTUNvbnN0cnVjdG9yT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9S
KERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KTsKKwogY29uc3QgSlNDOjpIYXNoVGFibGUqIGdl
dEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBK
U0M6Okhhc2hUYWJsZSogc3RhdGljVGFibGUpCiB7CiAgICAgcmV0dXJuIERPTU9iamVjdEhhc2hU
YWJsZU1hcDo6bWFwRm9yKGdsb2JhbERhdGEpLmdldChzdGF0aWNUYWJsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggOGM1NzRk
OTg0OWQzNjQyMTk0ZjAwYjdiODNjYzExYTliZjRlZmIxNS4uMTI0NjE3ZWI5YzVlNTUzM2I5M2Q0
ODA2MjM3N2YwMTQ3MmY1OGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDksOCArNDksOSBAQCBKU0RPTUdsb2JhbE9iamVj
dDo6SlNET01HbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdAogewogfQogCi1KU0RPTUdsb2JhbE9iamVjdDo6fkpTRE9NR2xvYmFsT2JqZWN0KCkK
K3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNlbGwpLT5KU0RPTUdsb2JhbE9iamVjdDo6fkpTRE9N
R2xvYmFsT2JqZWN0KCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTY1LDYgKzY2LDE2IEBAIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNHbG9iYWxUaGlzKiB0CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAorU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01HbG9iYWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAoreworICAgIGlmIChpbmhlcml0cygmSlNET01XaW5kb3dCYXNlOjpzX2lu
Zm8pKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KHRoaXMp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKGluaGVyaXRzKCZKU1dvcmtlckNv
bnRleHRCYXNlOjpzX2luZm8pKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2Vy
Q29udGV4dEJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCiB2b2lkIEpTRE9NR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
CiAgICAgSlNET01HbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5oCmluZGV4IDg3NTVmZmI4ODFjZmI4NGFiZWE3NDZmZGQ4N2MwOGU5MTFhZWExN2Qu
LmFkY2QzODg5ZmYyNzg3ZTBmYTRhMjIwZGFjNjQ3NjU1NzZkODUxMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0cnVjdCBKU0RPTUdsb2JhbE9iamVjdERh
dGE7CiAKICAgICAgICAgSlNET01HbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6
OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgY29uc3QgSlNDOjpHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSogPSAwKTsKLSAgICAgICAgdmlydHVhbCB+SlNET01HbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OkpTR2xvYmFsVGhpcyop
OwogCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNET01T
dHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KICAgICAg
ICAgSlNET01Db25zdHJ1Y3Rvck1hcCYgY29uc3RydWN0b3JzKCkgeyByZXR1cm4gbV9jb25zdHJ1
Y3RvcnM7IH0KIAotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgICAgICAvLyBNYWtl
IGJpbmRpbmcgY29kZSBnZW5lcmF0aW9uIGVhc2llci4KICAgICAgICAgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIHRoaXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGU2OGJjYTFkNjMyZTRjOTVjMTA4
ZDQyNmI0Y2Y1ZTFlOTFlYTU1ZWEuLjhkZTQzMmVkZjYxNzA3N2U3YzBiODkyOTRmZWUxOGUzNDc1
YzM2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcApAQCAtNjUsNiArNjUsMTEgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNET01XaW5kb3dTaGVsbCoKICAgICBhZGRT
dGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFs
cykpOwogfQogCit2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7
CisgICAganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGNlbGwpLT5KU0RPTVdpbmRvd0Jhc2U6On5K
U0RPTVdpbmRvd0Jhc2UoKTsKK30KKwogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3Vt
ZW50KCkKIHsKICAgICBBU1NFUlQobV9pbXBsLT5kb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggOTFmM2Y3YTRkNGM2YzZjZTY5
Yzc1M2JiOWM1YzEwMGUxNDFjOWRhYS4uODRjMTg2MjRhMmM4MDJmMzIyNTc1ZTIyYjlkZTE4YTVj
NThlZDdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKQEAgLTQwLDExICs0MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTRE9N
V2luZG93QmFzZShKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0
cjxET01XaW5kb3c+LCBKU0RPTVdpbmRvd1NoZWxsKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBKU0RPTVdpbmRvd1NoZWxsKik7CiAKKyAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgIHB1YmxpYzoKICAgICAgICAgdm9p
ZCB1cGRhdGVEb2N1bWVudCgpOwogCiAgICAgICAgIERPTVdpbmRvdyogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAg
IC8vIENhbGxlZCBqdXN0IGJlZm9yZSByZW1vdmluZyB0aGlzIHdpbmRvdyBmcm9tIHRoZSBKU0RP
TVdpbmRvd1NoZWxsLgogICAgICAgICB2b2lkIHdpbGxSZW1vdmVGcm9tV2luZG93U2hlbGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5k
ZXggMjVkMzg0YWIwZDU0NjAyZDY0OTNiOGJhZWUyMDkyM2ZjMjQ3OWNjZS4uZDk2Zjg0MGRiNjQw
YTI5ZGY3MWIzMTkxNzk4NTk0ZGI0M2FjNWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTU3LDggKzU3LDkgQEAgdm9pZCBKU0RP
TVdpbmRvd1NoZWxsOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBh
c3NSZWZQdHI8RE9NV2kKICAgICBzZXRXaW5kb3cod2luZG93KTsKIH0KIAotSlNET01XaW5kb3dT
aGVsbDo6fkpTRE9NV2luZG93U2hlbGwoKQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpLT5K
U0RPTVdpbmRvd1NoZWxsOjp+SlNET01XaW5kb3dTaGVsbCgpOwogfQogCiB2b2lkIEpTRE9NV2lu
ZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IDQzYjk2
ZTI0MjVmNDJmMmYwNDhhNDhjZjIwMGE4MzFmOWY4N2Q5YWMuLmQ4Njc2NmQxN2IyY2ZmZDdjNmEx
Y2IyMmRiNzQ3MjAzYTllMzZiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB0eXBlZGVmIEpTQzo6SlNHbG9iYWxUaGlzIEJhc2U7CiAgICAgcHVibGljOgogICAg
ICAgICBKU0RPTVdpbmRvd1NoZWxsKFBhc3NSZWZQdHI8RE9NV2luZG93PiwgSlNDOjpTdHJ1Y3R1
cmUqLCBET01XcmFwcGVyV29ybGQqKTsKLSAgICAgICAgdmlydHVhbCB+SlNET01XaW5kb3dTaGVs
bCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIEpT
RE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRv
dyo+KG1fdW53cmFwcGVkT2JqZWN0LmdldCgpKTsgfQogICAgICAgICB2b2lkIHNldFdpbmRvdyhK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNET01XaW5kb3cqIHdpbmRvdykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCmluZGV4IGQ1NGZlNzRmYTY3
Y2ZmZmM2ZTg4NzU0NDhjNDRkNmU5NTU3YWE2YTQuLjA1ZGE0MDI0MDVkMzY0YmJjZjk0ODIyODc0
YWNlNjA1NGFhMzI0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmNwcApAQCAtMzIsOSArMzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNET01XcmFwcGVyOjp2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZl
bnRXZWFrVnRhYmxlKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTRE9NV3JhcHBlcik7CisKK2NvbnN0IENsYXNzSW5mbyBK
U0RPTVdyYXBwZXI6OnNfaW5mbyA9IHsgIkpTRE9NV3JhcHBlciIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XcmFwcGVyKSB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdy
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4
IDM2ODVjODllNjg0ODhmM2UxZDg5Y2VhYTM0OGM5YjFlYjQ5ODg0ZTQuLmFjZDc5NmEzZmI0NGM5
NzBjODM2NGRlYTcyODlhODYyNjUyZTVlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlci5oCkBAIC00MiwxNiArNDIsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICAv
LyBBbiBpbmxpbmUgZnVuY3Rpb24gY2Fubm90IGJlIHRoZSBmaXJzdCBub24tYWJzdHJhY3Qgdmly
dHVhbCBmdW5jdGlvbiBkZWNsYXJlZAotICAgIC8vIGluIHRoZSBjbGFzcyBhcyBpdCByZXN1bHRz
IGluIHRoZSB2dGFibGUgYmVpbmcgZ2VuZXJhdGVkIGFzIGEgd2VhayBzeW1ib2wuCi0gICAgdmly
dHVhbCB2b2lkIHZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGUoKTsKLQogICAgIGV4
cGxpY2l0IEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAogICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0YTM5NmU0
NWNmNzFjM2MyZTczNzI1NjJmMzczMTYxOTAxMDUzZDBjLi45NTZjOTYxNWEwMWU5MzY4NmJmZWE5
MTUwNTFmNjViYzY1YTRjMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDggKzMxLDkgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U0ltYWdlQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNJbWFn
ZUNvbnN0cnVjdG9yKTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiSW1hZ2VDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudDo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSW1hZ2VDb25zdHJ1Y3RvcikgfTsK
K2NvbnN0IENsYXNzSW5mbyBKU0ltYWdlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkltYWdlQ29u
c3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSW1h
Z2VDb25zdHJ1Y3RvcikgfTsKIAogSlNJbWFnZUNvbnN0cnVjdG9yOjpKU0ltYWdlQ29uc3RydWN0
b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDVh
ZjdlMzdiMjdmOTdjNGMzMzhlMDQzMjRiNjYxMTdmYTE3YTM5OTIuLjYxYzE1ZDZiOTRmODI4ZTFk
YmIxNWRmYTI2Y2FiOTk1MjhlOTk4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmNwcApAQCAtMTg4LDggKzE4OCwxMCBAQCBKU1ZhbHVlIEpTTm9kZTo6YXBw
ZW5kQ2hpbGQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBqc051bGwoKTsKIH0KIAotU2Nv
cGVDaGFpbk5vZGUqIEpTTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKiBub2RlKSBjb25zdAorU2NvcGVDaGFpbk5vZGUqIEpTTm9kZTo6cHVzaEV2
ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIG5vZGUpIGNv
bnN0CiB7CisgICAgaWYgKGluaGVyaXRzKCZKU0hUTUxFbGVtZW50OjpzX2luZm8pKQorICAgICAg
ICByZXR1cm4ganNDYXN0PGNvbnN0IEpTSFRNTEVsZW1lbnQqPih0aGlzKS0+cHVzaEV2ZW50SGFu
ZGxlclNjb3BlKGV4ZWMsIG5vZGUpOwogICAgIHJldHVybiBub2RlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKaW5kZXggNDlhODI4
Y2M4ODU1YWQ1ZDMzOWU0YTM3YzA4NjU1MDlmMTQ5MzM3Ni4uNzc3ZTViODFlMzcxN2MxYzFmMTdi
Y2Y1YjAzMjNiYzMzZDAyN2MwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtNjksNyArNjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0
KEV4ZWNTdAogICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsU3RyaW5nLCBlYyk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEpTVmFsdWUgcHJvdG9jb2xzVmFsdWUgPSBleGVjLT5hcmd1bWVudCgx
KTsKLSAgICAgICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b2NvbHNW
YWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzSlNBcnJheShwcm90b2NvbHNWYWx1ZSkpIHsKICAgICAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKICAgICAgICAgICAgIEpTQXJyYXkqIHBy
b3RvY29sc0FycmF5ID0gYXNBcnJheShwcm90b2NvbHNWYWx1ZSk7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvdG9jb2xzQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAK
aW5kZXggOTJiNzlmNDM1NzhlNTk2MmE4NzNiNzY3Y2M1N2RhMjEzNmY2ODA3YS4uZTc5YzZlNGJk
NDMyMWU1YzA3N2YwODc4ZWZmNDUyOGFmZGE1OTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTYwLDggKzYwLDkgQEAg
dm9pZCBKU1dvcmtlckNvbnRleHRCYXNlOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotSlNXb3JrZXJD
b250ZXh0QmFzZTo6fkpTV29ya2VyQ29udGV4dEJhc2UoKQordm9pZCBKU1dvcmtlckNvbnRleHRC
YXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8SlNXb3JrZXJDb250ZXh0
QmFzZSo+KGNlbGwpLT5KU1dvcmtlckNvbnRleHRCYXNlOjp+SlNXb3JrZXJDb250ZXh0QmFzZSgp
OwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtlckNvbnRleHRCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaAppbmRleCBkODE3MWMxNTdlZWRiZTk5ZWY3Mjk3MDUy
NmU4Yzc0MjVkYzVlZmQ1Li5hYmNiZWI2NTgzMjQ0OTA1MWEzOTg1ZWFhYzZjMWNmNGE0Mjg1NzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFz
ZS5oCkBAIC00MSwxMiArNDEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEpT
V29ya2VyQ29udGV4dEJhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogICAgICAgICB0
eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5KU1dvcmtlckNvbnRleHRCYXNlKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDOjpKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19p
bmZvOwogCiAgICAgICAgIFdvcmtlckNvbnRleHQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5j
cHAKaW5kZXggY2I4NmIyOWI1OGIwNGUwOWYxNjRiNGZhYTQ2YTIwNTYzMDBmYjE5Zi4uYmZhOTNh
YTg3MDdiMDlhOWUzYjRiNjMxMzdhMmJkM2U4ZTYzMmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlLCBKCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJp
bmcocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpKTsKICAgICB9CiAgICAgaWYgKHZhbHVlLmlz
T2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKGlzSlNBcnJheSgmc2NyaXB0U3RhdGUtPmdsb2JhbERh
dGEoKSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChpc0pTQXJyYXkodmFsdWUpKSB7CiAgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5ID0gSW5zcGVjdG9yQXJy
YXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVl
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IGI2NzVjYTMxMzJkYzE0OTA0YzgwYmViYmExMjA5ZGJkNTczODQ2MTMuLmE1NmE4ZGM5
ZmE4ZjljNDkxYTBjNTc5Mzg1N2FmY2FlNzhjOTA2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzEwLDcgKzMx
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9i
amVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKTsKKyAgICAgICAgcmV0
dXJuIGlzSlNBcnJheShvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5m
byk7CiAgICAgfQogCiAgICAgYm9vbCBzdGFydE9iamVjdEludGVybmFsKEpTT2JqZWN0KiBvYmpl
Y3QpCkBAIC0zNTcsNyArMzU3LDcgQEAgcHJpdmF0ZToKICAgICBKU1ZhbHVlIGdldFNwYXJzZUlu
ZGV4KEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIGJvb2wmIGhhc0luZGV4
KQogICAgIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYXJyYXkpOwotICAgICAgICBpZiAo
aXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXJyYXkpKSB7CisgICAgICAgIGlmIChp
c0pTQXJyYXkoYXJyYXkpKSB7CiAgICAgICAgICAgICBpZiAoSlNBcnJheTo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChhcnJheSwgbV9leGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CiAgICAg
ICAgICAgICAgICAgaGFzSW5kZXggPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBzbG90
LmdldFZhbHVlKG1fZXhlYywgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzdlZDJiMWZkOWQ1ODk0
NmNlYTgwM2MzODc5YmI2MjgyY2EzMTBkNy4uNWQ0YmI2MDUxYWFjZTdjZGFlMzc3YzU0YWJiY2E0
NjZmNDg0YjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTgzMCw3ICs4MzAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAKICAgICAjIEN1c3RvbSBw
dXNoRXZlbnRIYW5kbGVyU2NvcGUgZnVuY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHZpcnR1YWwgSlNDOjpTY29wZUNoYWluTm9kZSogcHVzaEV2ZW50SGFuZGxlclNjb3BlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpTY29wZUNoYWluTm9kZSopIGNvbnN0O1xuXG4iKSBpZiAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUi
fTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6U2NvcGVDaGFpbk5vZGUqIHB1
c2hFdmVudEhhbmRsZXJTY29wZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NvcGVDaGFpbk5vZGUq
KSBjb25zdDtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
UHVzaEV2ZW50SGFuZGxlclNjb3BlIn07CiAKICAgICAjIEN1c3RvbSBjYWxsIGZ1bmN0aW9ucwog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7XG5cbiIpIGlmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNhbGwifTsKQEAgLTg2MSw3ICs4NjEsNiBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgT3ZlcnJpZGUgdG9Cb29sZWFuIHRvIHJldHVybiBm
YWxzZSBmb3Igb2JqZWN0cyB0aGF0IHdhbnQgdG8gJ01hc3F1ZXJhZGVzQXNVbmRlZmluZWQnLgog
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkIn0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJv
b2wgdG9Cb29sZWFuKEpTQzo6RXhlY1N0YXRlKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07XG4i
KTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQi
fSA9IDE7CiAgICAgfQogCkBAIC0xMzY5LDcgKzEzNjgsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztc
blxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIp
OwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICJBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKCRj
bGFzc05hbWUpO1xuXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIkFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoJGNsYXNzTmFtZSk7XG4iKTsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgbmUg
IkRPTVdpbmRvdyIgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2Vy
Q29udGV4dCJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoJGNsYXNzTmFtZSk7XG5cbiIpOworICAgIH0KIAogICAgIG15ICRudW1B
dHRyaWJ1dGVzID0gR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlKCRvYmplY3QsICRkYXRhTm9k
ZSk7CiAKQEAgLTE1MDEsOSArMTUwMyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERh
dGEoKSwgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3Qg
Q2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNs
YXNzTmFtZX1Qcm90b3R5cGVcIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBn
ZXQke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2NsYXNz
TmFtZX1Qcm90b3R5cGUpIH07XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNv
bnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zpc2li
bGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZCYXNlOjpzX2luZm8sIDAsIGdldCR7Y2xhc3NOYW1l
fVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSkgfTtcblxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJj
b25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwiJHt2aXNp
YmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8s
ICYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2Ns
YXNzTmFtZX1Qcm90b3R5cGUpIH07XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
ImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zp
c2libGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZCYXNlOjpzX2luZm8sICYke2NsYXNzTmFtZX1Q
cm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2NsYXNzTmFtZX1Qcm90b3R5
cGUpIH07XG5cbiIpOwogICAgIH0KICAgICBpZiAoJGludGVyZmFjZU5hbWUgbmUgIkRPTVdpbmRv
dyIgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpXG4iKTsKQEAgLTE1MTEsNiArMTUxMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
JHtjbGFzc05hbWV9PihleGVjLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CisKICAgICBpZiAoJG51bUNvbnN0YW50cyA+IDAg
fHwgJG51bUZ1bmN0aW9ucyA+IDAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RGVsZWdhdGluZ1Byb3RvdHlwZUdldE93blByb3BlcnR5U2xvdCJ9KSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKQEAgLTE1NzEsNyArMTU3NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKLSAg
ICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5mbyAkY2xhc3NOYW1lIiAuICI6OnNf
aW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9XCIsICYiIC4gJHBhcmVudENsYXNzTmFtZSAu
ICI6OnNfaW5mbywgIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFzc0luZm8g
JGNsYXNzTmFtZSIgLiAiOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfVwiLCAmQmFz
ZTo6c19pbmZvLCAiKTsKIAogICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgJiYgISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vU3RhdGljVGFibGVzIn0pIHsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICImJHtjbGFzc05hbWV9VGFibGUiKTsKQEAgLTE2MjEsNyArMTYyNCw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpO1xuIik7CiAgICAgICAgIGlmIChJc1R5cGVkQXJyYXlUeXBlKCRp
bXBsVHlwZSkgYW5kICgkaW1wbFR5cGUgbmUgIkFycmF5QnVmZmVyVmlldyIpIGFuZCAoJGltcGxU
eXBlIG5lICJBcnJheUJ1ZmZlciIpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBUeXBlZEFycmF5RGVzY3JpcHRvciBkZXNjcmlwdG9yKHZwdHIoKSwgT0JKRUNUX09GRlNF
VE9GKCR7Y2xhc3NOYW1lfSwgbV9zdG9yYWdlKSwgT0JKRUNUX09GRlNFVE9GKCR7Y2xhc3NOYW1l
fSwgbV9zdG9yYWdlTGVuZ3RoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yIGRlc2NyaXB0b3IoJiR7Y2xhc3NOYW1lfTo6c19p
bmZvLCBPQkpFQ1RfT0ZGU0VUT0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBPQkpFQ1RfT0ZG
U0VUT0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2VMZW5ndGgpKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgZ2xvYmFsRGF0YS5yZWdpc3RlclR5cGVkQXJyYXlEZXNj
cmlwdG9yKGltcGwoKSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIG1fc3RvcmFnZSA9IGltcGwoKS0+ZGF0YSgpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBtX3N0b3JhZ2VMZW5ndGggPSBpbXBsKCktPmxlbmd0
aCgpO1xuIik7CkBAIC0zMzg4LDEzICszMzkxLDE1IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbgogICAgIG15ICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnMgPSAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclBhcmFtZXRlcnMifTsKIAogICAg
IGlmICgkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8g
PSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfUNvbnN0cnVjdG9yXCIsICZET01Db25zdHJ1Y3Rvck9i
amVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjb25zdHJ1Y3RvckNsYXNz
TmFtZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNvbnN0IENsYXNz
SW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNz
TmFtZX1Db25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojoke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgOiBET01Db25zdHJ1Y3Rvcldp
dGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4i
KTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFz
c0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFz
c05hbWV9Q29uc3RydWN0b3JcIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICYke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjb25zdHJ1
Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkFT
U0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKCR7Y29uc3RydWN0b3JDbGFzc05hbWV9KTtcblxu
Iik7CisKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZvICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfUNvbnN0
cnVjdG9yXCIsICZCYXNlOjpzX2luZm8sICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CiAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojoke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
OiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L0NSdW50aW1lT2JqZWN0LmNwcAppbmRleCA0MDIzODNlODgzODk3MzJkYjJjZTY4ZDYyZDQ2MDNj
MTRiZjhiYzhlLi42ZGMxN2ZmMjJhNTUyNmQ4MjRmMzY5YWQ1NDc5ODE1ZjNiMTYyNzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCkBAIC00OCwxMCArNDgs
NiBAQCB2b2lkIENSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUNSdW50
aW1lT2JqZWN0Ojp+Q1J1bnRpbWVPYmplY3QoKQotewotfQotCiBDSW5zdGFuY2UqIENSdW50aW1l
T2JqZWN0OjpnZXRJbnRlcm5hbENJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENJbnN0YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAppbmRleCBiZWVkZGJiMjgzMmNjNGExYWVmZmNhMjA4
MzA2MzY3ODgzZDQ4MjU3Li42YmMxMWZlMGIwMmQyNTRiNmIwZTliZDAxMWNlYWJhNzYxOTcxZDRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgKQEAgLTUwLDggKzUw
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAotICAgIHZpcnR1
YWwgfkNSdW50aW1lT2JqZWN0KCk7Ci0KICAgICBDSW5zdGFuY2UqIGdldEludGVybmFsQ0luc3Rh
bmNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmNwcApp
bmRleCA5ZDUxN2UzOTgwOTg5MDc0YTU4YWQ0MDBkNzI0NDllMjhjMmIxMzAyLi44NGEzZWYzMTlh
YjdmYWY1Zjg1ZWQ5ZGE2MDBjMDAxZDlhMGE5NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuY3BwCkBAIC00NiwxMCArNDYsNiBA
QCB2b2lkIEphdmFSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUphdmFS
dW50aW1lT2JqZWN0Ojp+SmF2YVJ1bnRpbWVPYmplY3QoKQotewotfQotCiBKYXZhSW5zdGFuY2Uq
IEphdmFSdW50aW1lT2JqZWN0OjpnZXRJbnRlcm5hbEphdmFJbnN0YW5jZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEphdmFJbnN0YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2Uo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGlt
ZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmpl
Y3QuaAppbmRleCBlYmVkZDc2NmYzY2Q5ZGY1MWI4NTdlOTdmYmQxMzJlNDk4M2UwZjRjLi44NDlh
MDA3N2ViNmZjMmVhMTU5YzNiYjAxYTA4ZjYxYTBmZWNiYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKQEAgLTQ4LDggKzQ4LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAotICAgIHZpcnR1YWwg
fkphdmFSdW50aW1lT2JqZWN0KCk7Ci0KICAgICBKYXZhSW5zdGFuY2UqIGdldEludGVybmFsSmF2
YUluc3RhbmNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCmluZGV4
IDJkYWJmYzQwYzE3ZDU3NmUzOTA5OWRmMjQ5MzhhN2U5YWU0ZmIwMmMuLjBkODg1MWUxZDVkOGMy
NmJmNzU5MDA0MDYyYzYzYWM0NDNmODUwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmlydHVhbCB+T2JqQ1J1bnRpbWVPYmpl
Y3QoKTsKLQogICAgIE9iamNJbnN0YW5jZSogZ2V0SW50ZXJuYWxPYmpDSW5zdGFuY2UoKSBjb25z
dDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQppbmRleCBiOTI0ZmFkMzNjOGNj
ZDEwZTg0NTIyYjYxNjY4YmEwM2RhZWY1NGU2Li43YmIxNzZjNmJmZjVmNTQzNzAyNjk1MmVmM2M5
OWE3Y2FiZjVlMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpD
UnVudGltZU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVu
dGltZU9iamVjdC5tbQpAQCAtNDYsMTAgKzQ2LDYgQEAgdm9pZCBPYmpDUnVudGltZU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1PYmpDUnVudGltZU9iamVjdDo6fk9iakNSdW50aW1l
T2JqZWN0KCkKLXsKLX0KLQogT2JqY0luc3RhbmNlKiBPYmpDUnVudGltZU9iamVjdDo6Z2V0SW50
ZXJuYWxPYmpDSW5zdGFuY2UoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxPYmpj
SW5zdGFuY2UqPihnZXRJbnRlcm5hbEluc3RhbmNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCBlNzIwZWY2MDY3NjRiZDhiYmRjZjJjMWFmM2RhNTY0
NTE3MmFkZmQ2Li42MDI1NTk0NTBhNTBiNGZjMzQ3Yzg4ZTg2NzI5ZDNmZjQ0NTA4OGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtMTIyLDYgKzEyMiw3
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwpAQCAtMTMwLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAotICAgIHZpcnR1YWwgYm9v
bCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CisgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0
YXRlKikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVzZSBu
b25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRvIHNv
bHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgogCiAgICAgUmVmUHRyPE9iamNJbnN0YW5jZT4g
X2luc3RhbmNlOwogICAgIElkZW50aWZpZXIgX2l0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggNTU5YjkwMjM3ZmQwMDVkNzFlNDAyZmQ0NzEyNTQw
N2ZkMThmNjQzYy4uNzJmZWRjNzQ1YWZjNDEzNDk3MTMyMDZlMzJjNGNkMTYwMTFkODM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMTk5LDYgKzE5
OSwxMSBAQCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1YwogewogfQogCit2b2lkIE9iamNGYWxsYmFj
a09iamVjdEltcDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PE9iamNGYWxs
YmFja09iamVjdEltcCo+KGNlbGwpLT5PYmpjRmFsbGJhY2tPYmplY3RJbXA6On5PYmpjRmFsbGJh
Y2tPYmplY3RJbXAoKTsKK30KKwogdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IGE5YjdmYTczN2VlZWNhMTg4ZjI3OTkxYTRiZmY0MjZi
Y2UxODlkMjMuLjZiMjc1ZTI0MWYzOTM5OGYxZThkMGQ0NjA2NGZiY2VlN2VlNmQzYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTk4MCw2ICs5ODAsMTEgQEAg
UXRSdW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKCkKICAgICBkZWxldGUgZF9wdHI7CiB9
CiAKK3ZvaWQgUXRSdW50aW1lTWV0aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBq
c0Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oY2VsbCktPlF0UnVudGltZU1ldGhvZDo6flF0UnVudGlt
ZU1ldGhvZCgpOworfQorCiAvLyA9PT09PT09PT09PT09PT0KIAogUXRSdW50aW1lTWV0aG9kRGF0
YTo6flF0UnVudGltZU1ldGhvZERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1l
LmgKaW5kZXggNjI5Yzc5Njk4OGY1YzVlZTgxY2MzOWIwOGNkMDY0NTk3MGVlOWY2OC4uNDA2OTk3
ZjM0YTYzMWQ2NjZmNDA1ZWI4NTI5ZjM2MzBmYmNkMTNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDggQEAgY2xhc3MgUXRSdW50aW1lTWV0aG9k
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJu
YWxGdW5jdGlvbiBCYXNlOwogCi0gICAgdmlydHVhbCB+UXRSdW50aW1lTWV0aG9kKCk7CisgICAg
flF0UnVudGltZU1ldGhvZCgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAK
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGRlM2FjMGI4MTUwOTUwMjczMjFlYjcxNWNmM2MyY2Mz
ZmFhMWI4YWIuLjdkZWQ2NzMwNzgwZGZmZTY5ODJmMGRmZGYzM2E4OGZmZWQ1NDk4YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTU0LDYgKzU0LDExIEBAIFJ1
bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpCiAgICAgZGVsZXRlIGdldENvbmNyZXRlQXJyYXko
KTsKIH0KIAordm9pZCBSdW50aW1lQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAg
IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5
KCk7Cit9CisKIEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgUnVudGltZUFycmF5
KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmggYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IDc4NjBkMzE3MmFhNDhh
MzlkM2U5NDQxMGU2YzkzNDQ0MzE5ODAzZTcuLjU1MzBjYjM0NzM3ZjcwM2M5NGM2YzVjN2ViMjA0
ZDFkMTNkNzc2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApAQCAtNDcs
NyArNDcsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdHlwZWRlZiBCaW5kaW5nczo6QXJyYXkg
QmluZGluZ3NBcnJheTsKLSAgICB2aXJ0dWFsIH5SdW50aW1lQXJyYXkoKTsKKyAgICB+UnVudGlt
ZUFycmF5KCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IDlh
YTNlNGZiYzk4MzlhZGY2N2M4OGFkYjM2MjFhNjFjOTU3NDVkNmEuLjZiODYyMzE1ZjkwYWY5Njc0
MDFjN2NlMTA1MzVkMzljYzZkODc0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
bWV0aG9kLmNwcApAQCAtNTAsOCArNTAsOSBAQCBSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9k
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogewog
fQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OnZ0YWJsZUFuY2hvcigpCit2b2lkIFJ1bnRpbWVNZXRo
b2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxSdW50aW1lTWV0aG9kKj4o
Y2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7CiB9CiAKIHZvaWQgUnVudGlt
ZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKaW5k
ZXggNDBlZGExMzQxZGFlZWUxMjYwZTUwMmE4MWQ3MzgzYzY2YWI2MzI2YS4uZjc5NTVhMTIyMzE5
ZmI2MzVlMmI2OGQ1MTNkYzVhNTI4YWYyNThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUnVudGltZU1ldGhvZCA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rp
b24gQmFzZTsKIAotICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlz
dCYgbWV0aG9kTGlzdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAppbmRleCA0YWJiYzhlYWUxZjIzZmU2YmYxN2QzYTkwNDM5MDAzMjY4YjEyOWMzLi43ZWMw
ODdkMzU2NGQ1OTc4OTY5YTMwY2VjMTc2MTQwNzQ1NjM0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTQ5LDkgKzQ5LDExIEBAIHZvaWQgUnVudGltZU9i
amVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1SdW50aW1lT2JqZWN0Ojp+UnVudGltZU9i
amVjdCgpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAg
IEFTU0VSVCghbV9pbnN0YW5jZSk7CisgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5tX2lu
c3RhbmNlKTsKKyAgICB0aGlzT2JqZWN0LT5SdW50aW1lT2JqZWN0Ojp+UnVudGltZU9iamVjdCgp
OwogfQogCiB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAppbmRleCAwNTA0MzM2ZWI4YWY1MzVkMmViZGMxNjQ5ZWRkMGEz
YjU2NTczODkyLi42NDM3MTUxOGJiNzRlN2IzMjA2NjNmMTc0OTE3ZDRmM2I1OGJhNGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UnVudGlt
ZU9iamVjdCgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAppbmRl
eCBjMTY0NjgwNGIyZWI4ZjA1MjA4ZDUxZjc1NTliZTk1OTFjYzE4NGUyLi44MzRmOWI4YWQzMGM5
MWFhMjdjY2JjZmJhMTA5YzRmZDUxNzZjNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaApAQCAtNDksOCArNDksNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
UHJveHlSdW50aW1lT2JqZWN0KCk7Ci0KICAgICBQcm94eUluc3RhbmNlKiBnZXRJbnRlcm5hbFBy
b3h5SW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0KaW5k
ZXggZjUzMTkyNDljYjhjZmVmYmUwNTJjMzE1NWQxYzliMDZkZGI0NzM1OS4uYzI3ZTcyOGNkZWY3
YzRhOGE0ZDhjOWI1Yzk0NGViY2ZlZWQ1NzI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQpAQCAtNDcsMTAgKzQ3
LDYgQEAgdm9pZCBQcm94eVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAot
UHJveHlSdW50aW1lT2JqZWN0Ojp+UHJveHlSdW50aW1lT2JqZWN0KCkKLXsKLX0KLQogUHJveHlJ
bnN0YW5jZSogUHJveHlSdW50aW1lT2JqZWN0OjpnZXRJbnRlcm5hbFByb3h5SW5zdGFuY2UoKSBj
b25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oZ2V0SW50ZXJu
YWxJbnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBkM2QxMDBhODQ5NWRkMGM5MzJl
M2NiODJmZWZlMzdkNWU3MDRiNWFlLi44OTgxNDcxMzU3YjJhZTViNmJlY2QwZDY2MWNiNDA4ODQ5
ZTk2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCkBAIC0zOSw2ICszOSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorQVNTRVJUX0hBU19UUklWSUFM
X0RFU1RSVUNUT1IoSlNOUE1ldGhvZCk7CisKIGNvbnN0IENsYXNzSW5mbyBKU05QTWV0aG9kOjpz
X2luZm8gPSB7ICJOUE1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNOUE1ldGhvZCkgfTsKIAogSlNOUE1ldGhvZDo6SlNOUE1ldGhv
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTlBJ
ZGVudGlmaWVyIG5wSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBhMmZkMjI2ZGVk
ZGUyZWQ5ODg1OWRlMmIwOGUxNThmOTBmMmNkZWI2Li5hYTU2YTM3NTI3Njc1ZTk0NWZmYjBiY2M1
NTVmNTBjZDUyNWNiYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC03NCw2ICs3NCwxMSBAQCBK
U05QT2JqZWN0Ojp+SlNOUE9iamVjdCgpCiAgICAgQVNTRVJUKCFtX25wT2JqZWN0KTsKIH0KIAor
dm9pZCBKU05QT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNO
UE9iamVjdCo+KGNlbGwpLT5KU05QT2JqZWN0Ojp+SlNOUE9iamVjdCgpOworfQorCiB2b2lkIEpT
TlBPYmplY3Q6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX25wT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCmluZGV4IDRiOWFkN2NhZDE5MzQ5ZTI4ZjdlZDcxMjk3M2FkNTc4ODMzZjQ1NWYuLjdm
MjZmMGQ2NzM2YmI2ZGIyZjMyM2RmMmIwN2Y5ZjAyMmQ1MzFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApA
QCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgfkpTTlBPYmplY3QoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBiNDZmMTU5YmE4ZGFjNGM2OWZlYjA2MWIyMzg5
NjgxODdjZmY2YzgwLi41OWUxMjE3YzI4Yjk3MmM3YzA0MTIzNGM4YTFiNTE1MTljZmZkYWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNjgsNiArMTY4LDggQEAgRVhQT1JUUwogICAgICAg
ICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCiAgICAg
ICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9z
X2luZm9ASlNET01XcmFwcGVyQFdlYkNvcmVAQDJVQ2xhc3NJbmZvQEpTQ0BAQgorICAgICAgICA/
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RA
RnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAg
ICAgID9zZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVUb0ZyYW1lQEZyYW1lVmll
d0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlB
WFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpAQCAtMTg5LDQgKzE5MSwzIEBAIEVYUE9SVFMKICAgICAg
ICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAg
ICAgP3VwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3Jl
QEBRQUVYWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3
QDJAWFoKLSAgICAgICAgP3ZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVASlNET01X
cmFwcGVyQFdlYkNvcmVAQE1BRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmlu
ZGV4IGU1N2RjZGI4NmY2ZGE5ODBkNTBjNGUxYjBkNmM4NjU5YTQ0MmM1M2MuLmYwYmYxOGIxMWFj
ZTI3ZmY0MTI4ZDg3YjhlYWYwY2QxZDliMzcyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNG
TGl0ZS5kZWYKQEAgLTE4Miw0ICsxODIsMyBAQCBFWFBPUlRTCiAgICAgICAgID90b1JhbmdlQFdl
YkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCiAgICAgICAgID91cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAg
ICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCi0gICAgICAg
ID92aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlQEpTRE9NV3JhcHBlckBXZWJDb3Jl
QEBNQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDQwY2I3OGJiNTNmZTQ0OTYyMDZi
YTBmM2ExNDk5OThiNWY5ZGQ3NzguLmVjYmRmZDczNmY2ZWUzNzc4ZDdlMWEyNWVhMTMzZjY2Y2I2
MDZjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDEsNyArNDEsNiBAQCBfWk43V2Vi
Q29yZTEwQ2xpZW50UmVjdEMxRXY7CiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0lu
dFJlY3RFOwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVyYXRlZFN0cmVhbUV2Owog
X1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7Ci1fWk43V2ViQ29yZTEySlNET01X
cmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlRXY7CiBfWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRF
aWliOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJqUzZfOwogX1pON1dlYkNvcmUxMlRleHRJ
dGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNf
NVJhbmdlRVJtUzZfOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhm
Y2FlODhjZjM5ODQ0MWY1OWZhNzA3NWUzOWNiYjY3NzI0MWQxYWEuLjQ1ZTUwZTA3YmEwOTdhNWVj
N2FjZmY3YmVjOWZlNjVmZGUzMGNmOGUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIERlLXZpcnR1YWxpemUgZGVzdHJ1Y3RvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOiBSZW1vdmVkIHN5bWJvbCBubyBsb25nZXIgcHJlc2Vu
dC4KKwogMjAxMS0xMi0xMyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBHZXQgcmlkIG9mIGxheWVyaW5nIHZpb2xhdGlvbnMgaW4g
aW5jbHVkZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119112</attachid>
            <date>2011-12-13 17:02:17 -0800</date>
            <delta_ts>2011-12-14 11:28:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74331-20111213170216.patch</filename>
            <type>text/plain</type>
            <size>288779</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NDZiMjIwNGI1OTFlODZjNTE1NjViMzdkYWY3Y2NkMmU1ZjY3Njg5Li41MmJlNzc1MmEzNzI5ZGVm
ZmVhMTEzM2NhMzBhZTA2NjAxYWIwYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjIgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZWdhcGF0Y2gg
d2hpY2ggZnJlZXMgdXMgZnJvbSB0aGUgY2hhaW5zIG9mIHZpcnR1YWwgZGVzdHJ1Y3RvcnMuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3JzLCB3aGlj
aCBhcmUgdGhlIGxhc3Qgb2YgdGhlIHZpcnR1YWwgCisgICAgICAgIGZ1bmN0aW9ucywgZnJvbSB0
aGUgSlNDZWxsIGhpZXJhcmNoeSwgd2UgbmVlZCB0byBhZGQgdGhlIENsYXNzSW5mbyBwb2ludGVy
IHRvIAorICAgICAgICB0aGUgY2VsbCByYXRoZXIgdGhhbiB0byB0aGUgc3RydWN0dXJlIGJlY2F1
c2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBsYXppbHkgY2FsbCAKKyAgICAgICAgdGhlIHN0YXRp
YyBkZXN0cm95KCkgZnVuY3Rpb25zIHRoYXQgd2lsbCByZXBsYWNlIHRoZSB2aXJ0dWFsIGRlc3Ry
dWN0b3JzLCB3ZSAKKyAgICAgICAgbmVlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgQ2xhc3NJ
bmZvIHdpdGhvdXQgdGhlIGRhbmdlciBvZiB0aGUgb2JqZWN0J3MgCisgICAgICAgIFN0cnVjdHVy
ZSBiZWluZyBjb2xsZWN0ZWQgYmVmb3JlIHRoZSBvYmplY3QgaXRzZWxmLgorCisgICAgICAgIEFm
dGVyIGFkZGluZyB0aGUgQ2xhc3NJbmZvIHRvIHRoZSBjZWxsLCB3ZSBjYW4gdGhlbiBiZWdpbiB0
byByZW1vdmUgb3VyIHVzZSAKKyAgICAgICAgb2YgdnB0cnMgZm9yIG9wdGltaXphdGlvbnMgd2l0
aGluIHRoZSBKSVQgYW5kIHRoZSBHQy4gIFdoZW4gd2UgaGF2ZSByZW1vdmVkIAorICAgICAgICBh
bGwgb2YgdGhlIHN0b3JlZCB2cHRycyBmcm9tIEpTR2xvYmFsRGF0YSwgd2UgY2FuIHRoZW4gYWxz
byByZW1vdmUgYWxsIG9mIAorICAgICAgICB0aGUgcmVsYXRlZCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisKKyAgICAgICAgVGhlIHJlcGxhY2VtZW50IGZvciB2aXJ0dWFsIGRlc3RydWN0b3JzIHdp
bGwgYmUgdG8gYWRkIGEgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gCisgICAgICAgIHBvaW50ZXIg
dG8gdGhlIE1ldGhvZFRhYmxlIHN0b3JlZCBpbiBDbGFzc0luZm8uICBBbnkgc3ViY2xhc3Mgb2Yg
SlNDZWxsIHRoYXQgaGFzIAorICAgICAgICBhIG5vbi10cml2aWFsIGRlc3RydWN0b3Igd2lsbCBy
ZXF1aXJlIGl0cyBvd24gc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gdG8gc3RhdGljIAorICAgICAg
ICBjYWxsIGl0cyBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3IsIHdoaWNoIHdpbGwgbm93IGJlIG5v
bi12aXJ0dWFsLiAgSW4gZnV0dXJlIAorICAgICAgICBwYXRjaGVzIHdlIHdpbGwgc2xvd2x5IG1v
dmUgYXdheSBmcm9tIGRlc3RydWN0b3JzIGFsdG9nZXRoZXIgYXMgd2UgbWFrZSBtb3JlIGFuZCAK
KyAgICAgICAgbW9yZSBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnkgcmF0aGVyIHRoYW4gbWFs
bG9jLWVkIG1lbW9yeS4gIFRoZSBHQyB3aWxsIG5vdyAKKyAgICAgICAgY2FsbCB0aGUgc3RhdGlj
IGRlc3Ryb3kgbWV0aG9kIHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAg
ICAgICAgQXMgd2UgZ28gdGhyb3VnaCB0aGUgaGllcmFyY2h5IGFuZCBhZGQgc3RhdGljIGRlc3Ry
b3kgZnVuY3Rpb25zIHRvIGNsYXNzZXMsIAorICAgICAgICB3ZSB3aWxsIGFsc28gYWRkIGEgbmV3
IGFzc2VydCwgQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IsIHRvIHRob3NlIGNsYXNzZXMg
CisgICAgICAgIHRvIHdoaWNoIGl0IGFwcGxpZXMuICBUaGUgZnV0dXJlIGdvYWwgaXMgdG8gZXZl
bnR1YWxseSBoYXZlIGV2ZXJ5IGNsYXNzIGhhdmUgdGhhdCBhc3NlcnQuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Nv
bnN0cnVjdG9yOjpkZXN0cm95KTogQWRkIGEgZGVzdHJveSBmdW5jdGlvbiB0byBzdGF0aWNhbGx5
IGNhbGwgCisgICAgICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IgYmVjYXVzZSBpdCBoYXMgc29t
ZSBleHRyYSBkZXN0cnVjdGlvbiBsb2dpYy4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6IEFkZCB0cml2
aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBKU0NhbGxiYWNrRnVuY3Rpb24uCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOiBBZGQgYSBkZXN0cm95IGZ1bmN0aW9uIHRvIHN0YXRp
Y2FsbHkgY2FsbCB+SlNDYWxsYmFja09iamVjdCAKKyAgICAgICAgYmVjYXVzZSBpdCBoYXMgYSBt
ZW1iZXIgT3duUHRyIHRoYXQgbmVlZHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChKU0M6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6IEFkZC9yZW1vdmUgbmVjZXNzYXJ5IHN5bWJvbHMgZm9yIEpTQy4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmOiBTYW1lIGZvciBXaW5kb3dzIHN5bWJvbHMuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcDogRGVidWdnZXJBY3RpdmF0aW9uLCBmb3Igc29tZSBzdHJhbmdl
IHJlYXNvbiwgZGlkbid0IAorICAgICAgICBoYXZlIGl0cyBvd24gQ2xhc3NJbmZvIGRlc3BpdGUg
dGhlIGZhY3QgdGhhdCBpdCBvdmVycmlkZXMgYSBudW1iZXIgb2YgTWV0aG9kVGFibGUgCisgICAg
ICAgIG1ldGhvZHMuICBBZGRlZCB0aGUgQ2xhc3NJbmZvLCBhbG9uZyB3aXRoIGFuIGFzc2VydGlv
biB0aGF0IGl0cyBkZXN0cnVjdG9yIGlzIHRyaXZpYWwuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOiBSZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJndW1lbnQgdG8gaXNKU0FycmF5LCBpc0pTQnl0ZUFycmF5
LCAKKyAgICAgICAgaXNKU1N0cmluZywgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3Bw
OiAgRGl0dG8uICBBbHNvIHJlbW92ZSB1c2VzIG9mIGpzQXJyYXlWUHRyIGluIGZhdm9yIG9mIHVz
aW5nIHRoZSAKKyAgICAgICAgSlNBcnJheSBDbGFzc0luZm8gcG9pbnRlci4KKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6ICBSZXBsYWNlIHVzZXMgb2YgdGhlIG9sZCB2cHRycyB3aXRoIG5ldyBDbGFzc0luZm8g
CisgICAgICAgIGNvbXBhcmlzb25zIHNpbmNlIHdlIGRvbid0IGhhdmUgdnB0cnMgYW55bW9yZS4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6IFJlbW92ZSBhbGwgdXNlcyBvZiB2cHRycyBpbiBHQyBvcHRpbWl6YXRpb25zIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCAKKyAgICAgICAgQ2xhc3NJbmZvIGNvbXBhcmlzb25zLgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFp
bik6CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IERpdHRvLgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOiBEaXR0by4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9y
Lmg6IERpdHRvLgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IpOgorICAg
ICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uY3BwOiBOb3cgdGhhdCB3ZSBkb24ndCBoYXZlIHZw
dHJzLCB3ZSBjYW4ndCBjb3VudCB0aGVtLiAgCisgICAgICAgIFdlJ2xsIGhhdmUgdG8gcmVuYW1l
IHRoaXMgY2xhc3MgYW5kIG1ha2UgaXQgdXNlIENsYXNzSW5mbyBwdHJzIGluIGEgZnV0dXJlIHBh
dGNoLgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6Y291bnQpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDogUmVtb3ZlIGFsbCBnbG9iYWwgZGF0YSBhcmd1bWVu
dHMgZnJvbSBpc0pTQXJyYXksIAorICAgICAgICBldGMuIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpT
Qzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6IFJlbW92ZSB2cHRyIGFyZ3VtZW50IGZyb20gZW1pdEFsbG9jYXRlQmFz
aWNKU09iamVjdCAKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOiBSZW1vdmUgdnB0
ciBwbGFudGluZywgYW5kIGFkZCBDbGFzc0luZm8gcGxhbnRpbmcsIAorICAgICAgICByZW1vdmUg
YWxsIHZ0YWJsZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgYnJhbmNoIGNvZGUgd2l0aCBjb3Jy
ZXNwb25kaW5nIENsYXNzSW5mby4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmlt
aXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9l
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6IFJlbW92ZSBnbG9iYWwgZGF0YSBhcmd1bWVudCBm
cm9tIGlzSlNTdHJpbmcsIGV0Yy4KKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICog
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgc3R1ZmYgd2l0
aCBDbGFzc0luZm8gc3R1ZmYuCisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6Omxv
YWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDogUmVtb3ZlIGdsb2JhbCBkYXRhIGFyZ3VtZW50IGZyb20gaXNKU0Fy
cmF5LgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQb3Ap
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1NoaWZ0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY0ZpbHRlcik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTWFwKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNFdmVyeSk6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jRm9yRWFjaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29tZSk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmVkdWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZWR1Y2VSaWdodCk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Jv
b2xlYW5PYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOiBBZGQgZGVzdHJv
eSBmdW5jdGlvbiBwb2ludGVyIHRvIE1ldGhvZFRhYmxlLgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAg
ICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOiBBZGQgZGVzdHJveSBmdW5jdGlvbiBmb3IgRGF0
ZUluc3RhbmNlIGJlY2F1c2UgaXQgaGFzIGEgUmVmUHRyIAorICAgICAgICB0aGF0IG5lZWRzIGRl
c3RydWN0aW9uLgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6
IERpdHRvIChiZWNhdXNlIG9mIFVTdHJpbmcgbWVtYmVyKS4KKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Lmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwg
ZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDogQWRkIGRlc3Ryb3kgZnVuY3Rpb25zIGZv
ciBFeGVjdXRhYmxlQmFzZSBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChK
U0M6OkV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1
dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ry
b3kpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0Lgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBEaXR0by4gQWxzbyByZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJnIGZyb20gaXNKU0FycmF5LgorICAgICAgICAoSlNDOjpm
dW5jdGlvblByb3RvRnVuY0FwcGx5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5j
cHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6IFJl
bW92ZSBjYWxsIHRvIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyBzaW5jZSBpdCBubyAKKyAgICAg
ICAgbG9uZ2VyIGV4aXN0cy4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZ09uY2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6IFJlbW92ZSB2dGFibGVB
bmNob3IgZnVuY3Rpb24sIGFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LCAKKyAgICAgICAg
cmVtb3ZlIGZpcnN0IGFyZyBmcm9tIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2suCisgICAgICAgICogcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBjYWxsIH5KU0FycmF5
LiAgUmVwbGFjZSB2cHRyIGNoZWNrcyBpbiAKKyAgICAgICAgZGVzdHJ1Y3RvciB3aXRoIENsYXNz
SW5mbyBjaGVja3MuCisgICAgICAgIChKU0M6OkpTQXJyYXk6On5KU0FycmF5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6IFJl
bW92ZSBWUHRyU3RlYWxpbmdIYWNrLiAgUmVtb3ZlIGdsb2JhbERhdGEgYXJndW1lbnQgZnJvbSBp
c0pTQXJyYXkgCisgICAgICAgIGFuZCBjaGFuZ2UgdGhlbSB0byBjaGVjayB0aGUgQ2xhc3NJbmZv
IHJhdGhlciB0aGFuIHRoZSB2cHRycy4KKyAgICAgICAgKEpTQzo6aXNKU0FycmF5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBh
c3NlcnQuIFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkuCisgICAgICAgIChKU0M6OmJv
dW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBm
dW5jdGlvbiwgcmVwbGFjZSB2cHRyIGNoZWNrcyB3aXRoIENsYXNzSW5mbyBjaGVja3MuCisgICAg
ICAgIChKU0M6OkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpKU0J5
dGVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBSZW1v
dmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLgorICAgICAgICAoSlNDOjppc0pTQnl0ZUFycmF5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNz
ZXJ0LiAgQWRkIHN0YXRpYyBkZXN0cm95IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6IFJlbW92ZSBWUHRyU3RlYWxp
bmdIYWNrIGNvZGUuICBBZGQgZnVuY3Rpb24gZm9yIHJldHVybmluZyB0aGUgb2Zmc2V0IAorICAg
ICAgICBvZiB0aGUgQ2xhc3NJbmZvIHBvaW50ZXIgaW4gdGhlIG9iamVjdCBmb3IgdXNlIGJ5IHRo
ZSBKSVQuICBBZGQgdGhlIENsYXNzSW5mbyBwb2ludGVyIHRvIAorICAgICAgICB0aGUgSlNDZWxs
IGl0c2VsZiwgYW5kIGdyYWIgaXQgZnJvbSB0aGUgU3RydWN0dXJlLiAgUmVtb3ZlIHRoZSB2cHRy
IGFuZCBzZXRWUHRyIGZ1bmN0aW9ucywgCisgICAgICAgIGFzIHRoZXkgYXJlIG5vIGxvbmdlciB1
c2VkLiAgQWRkIGEgdmFsaWRhdGVkQ2xhc3NJbmZvIGZ1bmN0aW9uIHRvIEpTQ2VsbCBmb3IgYW55
IGNsaWVudHMgCisgICAgICAgIHRoYXQgd2FudCB0byB2ZXJpZnksIHdoaWxlIGluIERlYnVnIG1v
ZGUsIHRoYXQgdGhlIENsYXNzSW5mbyBjb250YWluZWQgaW4gdGhlIGNlbGwgaXMgdGhlIAorICAg
ICAgICBzYW1lIG9uZSBhcyB0aGF0IGNvbnRhaW5lZCBpbiB0aGUgU3RydWN0dXJlLiAgVGhpcyBp
c24ndCB1c2VkIHRvbyBvZnRlbiwgYmVjYXVzZSBtb3N0IG9mIAorICAgICAgICB0aGUgcGxhY2Vz
IHdoZXJlIHdlIGNvbXBhcmUgdGhlIENsYXNzSW5mbyB0byB0aGluZ3MgY2FuIGJlIGNhbGxlZCBk
dXJpbmcgZGVzdHJ1Y3Rpb24uICAKKyAgICAgICAgU2luY2UgdGhlIFN0cnVjdHVyZSBpcyB1bnJl
bGlhYmxlIGR1cmluZyB0aGUgcGhhc2Ugd2hlbiBkZXN0cnVjdG9ycyBhcmUgYmVpbmcgY2FsbGVk
LCAKKyAgICAgICAgd2UgY2FuJ3QgY2FsbCB2YWxpZGF0ZWRDbGFzc0luZm8uCisgICAgICAgIChK
U0M6OkpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2sgY29kZS4gIEFkZCBz
dGF0aWMgZGVzdHJveSwgcmVtb3ZlIHZ0YWJsZUFuY2hvciwgCisgICAgICAgIHJlbW92ZSBmaXJz
dCBhcmcgZnJvbSBjYWxsIHRvIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6IAorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcDogUmVtb3ZlIGFsbCBWUHRyIHN0ZWFsaW5nIGNvZGUgYW5kIHN0b3JhZ2UsIGluY2x1
ZGluZyBzdG9yZVZQdHJzLCAKKyAgICAgICAgYXMgdGhlc2UgdnB0cnMgYXJlIG5vIGxvbmdlciBu
ZWVkZWQgaW4gdGhlIGNvZGViYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlEZXNjcmlwdG9yOjpUeXBlZEFycmF5RGVzY3JpcHRv
cik6IENoYW5nZWQgdGhlIFR5cGVkQXJyYXlEZXNjcmlwdG9yIHRvIHVzZSAKKyAgICAgICAgQ2xh
c3NJbmZvIHJhdGhlciB0aGFuIHRoZSB2cHRyLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwOiBBZGQgdHJpdmlhbCBkZXN0
cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOiBEaXR0by4gUmVtb3ZlIGZpcnN0
IGFyZyBmcm9tIGlzSlNBcnJheSBjYWxscy4KKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDogCisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIEpTT2JqZWN0LCBy
ZW1vdmUgdnRhYmxlQW5jaG9yIAorICAgICAgICBmcm9tIEpTTm9uRmluYWxPYmplY3QgYW5kIEpT
RmluYWxPYmplY3QsIGFkZCBzdGF0aWMgZGVzdHJveSBmb3IgSlNGaW5hbE9iamVjdCBhbmQgCisg
ICAgICAgIEpTTm9uRmluYWxPYmplY3QsIGFkZCBpc0pTRmluYWxPYmplY3QgdXRpbGl0eSBmdW5j
dGlvbiBzaW1pbGFyIHRvIGlzSlNBcnJheSwgcmVtb3ZlIGFsbCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTTm9uRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjppc0pTRmluYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6IEFkZCBz
dGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChK
U0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oOiBEaXR0by4gCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6IERpdHRvLiBSZW1vdmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLiBBbHNvIHJl
bW92ZSBmaXh1cFZQdHIgY29kZSwgCisgICAgICAgIHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRv
IGZpeHVwIHZwdHJzLgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6
anNOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmcpOgorICAgICAgICAo
SlNDOjpqc1N1YnN0cmluZzgpOgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAg
IChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZ0J1aWxkZXIpOgor
ICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuY3BwOiAKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1l
L01hdGhPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOiBSZW1vdmUgY2FsbHMgdG8gZml4dXBWUHRyLCByZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNT
dHJpbmcuCisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToK
KyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDog
QWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlc3Ryb3kpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBmb3IgUmVnRXhwQ29uc3RydWN0b3IgYW5kIFJl
Z0V4cE1hdGNoZXNBcnJheS4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDogQWRk
IHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlc3Ryb3kpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29w
ZUNoYWluLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDogRGl0dG8uIFJlbW92ZSB2dGFibGVB
bmNob3IuCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6IE1vdmUgSlNDZWxsOjpmaW5p
c2hDcmVhdGlvbiBhbmQgSlNDZWxsIGNvbnN0cnVjdG9yIGludG8gU3RydWN0dXJlLmggCisgICAg
ICAgIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdGhlIGZ1bGwgU3RydWN0dXJlIHR5cGUgdG8g
YWNjZXNzIHRoZSBDbGFzc0luZm8gdG8gc3RvcmUgaW4gdGhlIEpTQ2VsbC4KKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
ZENsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBBZGQgbmV3IGFzc2VydGlvbiBBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUiwgd2hpY2ggdXNlcyBjbGFuZ3MgCisgICAgICAgIGFiaWxpdHkgdG8gdGVs
bCB1cyB3aGVuIGEgY2xhc3MgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBXZSB3aWxsIHVzZSB0
aGlzIGFzc2VydCAKKyAgICAgICAgbW9yZSBpbiBmdXR1cmUgcGF0Y2hlcyBhcyB3ZSBtb3ZlIHRv
d2FyZCBoYXZpbmcgYWxsIEpTQyBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnksIAorICAgICAg
ICB3aGljaCBtZWFucyBtb3ZpbmcgYXdheSBmcm9tIHVzaW5nIGRlc3RydWN0b3JzL2ZpbmFsaXpl
cnMuCisKIDIwMTEtMTItMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBcmd1bWVudHMgb2JqZWN0IGRvZXNuJ3QgaGFuZGxlIG11dGF0aW9uIG9mIGxlbmd0aCBw
cm9wZXJ0eSBjb3JyZWN0bHkKQEAgLTEzNywxMiArNDU2LDYgQEAKICAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CiAgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKICAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgotICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgotICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgot
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6Ci0g
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNo
KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6Ci0gICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgogICAgICAgICAqIHJ1bnRp
bWUvSGV1cmlzdGljcy5jcHA6CiAgICAgICAgIChKU0M6OkhldXJpc3RpY3M6OmluaXRpYWxpemVI
ZXVyaXN0aWNzKToKICAgICAgICAgKiBydW50aW1lL0hldXJpc3RpY3MuaDoKQEAgLTE1OCw3ICs0
NzEsNiBAQAogICAgICAgICAoV1RGOjpvcGVyYXRvcj09KTogUmVtb3ZlZCBjYXN0IG5vIGxvbmdl
ciBuZWVkZWQuCiAgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgogICAgICAgICAoV1RG
OjplcXVhbCk6IENoYW5nZWQgdGVtcGxhdGUgdG8gc2V2ZXJhbCBvdmVybG9hZGVkIG1ldGhvZHMu
Ci0KIDIwMTEtMTItMTIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRWxpbWluYXRlIER1cGxpY2F0ZSB3b3JkIGF0IGEgdGltZSBlcXVhbCBjb2RlIGluIFN0
cmluZ0ltcGwuY3BwIGFuZCBTdHJpbmdIYXNoLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4
IGQzNmFiZWRkODRkMmJlYTgxMDFhNmQ1YTM4OWNlODhmNzg4ZDJmZTMuLjMzODBlOWQ5Yzg0Nzc1
YjcxNjM3YmY2NmZlYTc5MzcyOTExOTRlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDExLTEyLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3Bw
OiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChVc2VyT2JqZWN0SW1wOjpk
ZXN0cm95KToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisKIDIwMTEtMTItMDIgIERhdmlk
IExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBXVEYgY2xhc3Mg
ZnJvbSBUZW1wb3JhcmlseUNoYW5nZSB0byBUZW1wb3JhcnlDaGFuZ2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTFiODU5MGU2MDQ0NGZiNzNjNGFkZDFjNjFkZmUzNWU3ZjBkNTkyYS4uNTAxNTEzNDUxNGNkZjk4
YTQ2NjE1MDQyMWQxOGM4ZTk2NGE3Nzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisy
MDExLTEyLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgRG9pbmcgZXZl
cnl0aGluZyBoZXJlIHRoYXQgd2FzIGRvbmUgdG8gdGhlIEpTQ2VsbCBoaWVyYXJjaHkgaW4gSmF2
YVNjcmlwdENvcmUuIAorICAgICAgICBTZWUgdGhlIENoYW5nZUxvZyBmb3IgdGhpcyBjb21taXQg
Zm9yIGEgbW9yZSBpbi1kZXB0aCBkZXNjcmlwdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOiBBZGQvcmVtb3ZlIHN5bWJvbHMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBSZW1vdmUgZmlyc3QgYXJnIGZyb20gaXNKU0Fy
cmF5IGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0V2Via2l0TGluZURhc2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIERPTUNvbnN0cnVjdG9yT2JqZWN0
IAorICAgICAgICBhbmQgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kuICBBZGQg
aW1wbGVtZW50YXRpb24gZm9yIAorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0IHRoYXQg
ZGlzcGF0Y2hlcyB0byBkaWZmZXJlbnQgZnVuY3Rpb25zIGluIHN1YmNsYXNzZXMgCisgICAgICAg
IGRlcGVuZGluZyBvbiBvdXIgY3VycmVudCBDbGFzc0luZm8uICBXZSBkbyB0aGlzIHNvIHRoYXQg
d2UgY2FuIGdldCByaWQgb2YgdGhlIAorICAgICAgICB2aXJ0dWFsLW5lc3Mgb2Ygc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgYmVjYXVzZSBhbnkgdmlydHVhbCBmdW5jdGlvbnMgd2lsbCB0aHJvdyAK
KyAgICAgICAgb2ZmIHRoZSBsYXlvdXQgb2YgdGhlIG9iamVjdCBhbmQgd2UnbGwgY3Jhc2ggYXQg
cnVudGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4K
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZGVzdHJveSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6IERlLXZpcnR1YWxpemUgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDog
QWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6
ZGVzdHJveSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0
b3IgYXNzZXJ0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOiBBZGQgYSBD
bGFzc0luZm8gdG8gSlNET01XcmFwcGVyIHNpbmNlIGl0IG5vdyBvdmVycmlkZXMgCisgICAgICAg
IGEgTWV0aG9kVGFibGUgZnVuY3Rpb24uIFJlbW92ZSB2dGFibGVBbmNob3IgdmlydHVhbCBmdW5j
dGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOiBBZGQg
dHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVD
dXN0b20uY3BwOiBDaGFuZ2UgaW1wbGVtZW50YXRpb24gb2YgcHVzaEV2ZW50SGFuZGxlclNjb3Bl
IHNvIHRoYXQgCisgICAgICAgIGl0IGRpc3BhdGNoZXMgdG8gdGhlIGNvcnJlY3QgZnVuY3Rpb24g
ZGVwZW5kaW5nIG9uIHRoZSAKKyAgICAgICAgaWRlbnRpdHkgb2YgdGhlIGNsYXNzIGFzIHNwZWNp
ZmllZCBieSB0aGUgQ2xhc3NJbmZvLiAgCisgICAgICAgIFNlZSBKU0RPTUdsb2JhbE9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBmb3IgZXhwbGFuYXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXZWJTb2NrZXRDdXN0b20uY3BwOiBSZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNBcnJheSBjYWxs
LgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNX
ZWJTb2NrZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3Bw
OiBBZGQgc3RhdGljIGRlc3Ryb3kuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRC
YXNlOjpkZXN0cm95KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
Lmg6IAorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDogUmVtb3ZlIGZpcnN0
IGFyZyB0byBpc0pTQXJyYXkgY2FsbC4KKyAgICAgICAgKFdlYkNvcmU6OmpzVG9JbnNwZWN0b3JW
YWx1ZSk6IAorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjppc0FycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Z2V0U3BhcnNlSW5kZXgpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJh
dGVIZWFkZXIpOiBSZW1vdmUgdmlydHVhbC1uZXNzIG9mIGFueSBjdXN0b20gcHVzaEV2ZW50SGFu
ZGxlclNjb3BlIChzZWUgCisgICAgICAgIEpTTm9kZUN1c3RvbTo6cHVzaEV2ZW50SGFuZGxlclNj
b3BlIGZvciBleHBsYW5hdGlvbikuICBSZW1vdmUgdmlydHVhbCB0b0Jvb2xlYW4gCisgICAgICAg
IGZvciBhbnlib2R5IHdobyBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQsIHNpbmNlIG91ciBKU09i
amVjdCBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIAorICAgICAgICB0aGlzIGJhc2VkIG9uIHRoZSBU
eXBlSW5mbyBpbiB0aGUgU3RydWN0dXJlLiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydCBm
b3IgYW55IAorICAgICAgICBjbGFzcyBvdGhlciB0aGFuIERPTVdpbmRvdyBvciBXb3JrZXJDb250
ZXh0cy4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBDaGFuZ2UgQ2xhc3NJbmZv
IGRlZmluaXRpb25zIHRvIHVzZSBCYXNlOjpzX2luZm8sIHNpbmNlIAorICAgICAgICB0eXBpbmcg
dGhlIHBhcmVudCBjbGFzcyBtb3JlIHRoYW4gb25jZSBpcyBkdXBsaWNhdGlvbiBvZiBpbmZvcm1h
dGlvbiBhbmQgaW5jcmVhc2VzIAorICAgICAgICB0aGUgbGlrZWxpaG9vZCBvZiBtaXN0YWtlcy4g
IFBhc3MgQ2xhc3NJbmZvIHRvIFR5cGVBcnJheURlc2NyaXB0b3JzIGluc3RlYWQgb2YgdnB0ci4g
CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IEFkZCB0cml2aWFsIGRl
c3RydWN0b3IgYXNzZXJ0IGZvciBhbGwgZ2VuZXJhdGVkIGNvbnN0cnVjdG9ycy4KKyAgICAgICAg
KiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHA6IFJlbW92ZSBlbXB0eSB2aXJ0dWFsIGRlc3Ry
dWN0b3IuCisgICAgICAgICogYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaDogCisgICAgICAgICog
YnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBi
cmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oOiAKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9PYmpDUnVudGltZU9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpD
UnVudGltZU9iamVjdC5tbToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDog
QWRkIHN0YXRpYyBkZXN0cm95IGZvciBPYmpjRmFsbGJhY2tPYmplY3RJbXAuIERlLXZpcnR1YWxp
emUgCisgICAgICAgIHRvQm9vbGVhbiBpbiB0aGUgc2hvcnQgdGVybS4gIE5lZWQgbG9uZ2VyIHRl
cm0gZml4LgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVzdHJveSk6CisgICAgICAg
ICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgdG8gUXRSdW50
aW1lTWV0aG9kLgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0aG9kOjpkZXN0
cm95KToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOiBEZS12aXJ0dWFsaXplIH5R
dFJ1bnRpbWVNZXRob2QuCisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOiBEZS12
aXJ0dWFsaXplIGRlc3RydWN0b3IuIEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6
UnVudGltZUFycmF5OjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5o
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6IFJlbW92ZSB2dGFibGVBbmNo
b3IuIEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6ZGVz
dHJveSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTEtMTItMTMgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5u
LmNvbT4KIAogICAgICAgICBEb24ndCBtYWtlIHRoZSBiaXRtYXAgdHJhbnNwYXJlbnQgd2hlbiB1
c2luZyB0aGVtZSBkcmF3aW5nCkBAIC0yNjEsNyArMzQ0LDYgQEAKIAogICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NSW50ZXJuYWwubW06CiAgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKLQogMjAxMS0xMi0xMiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQ1NTIDIuMSBmYWlsdXJlOiBlb2YtMDAyLmh0bSBmYWlscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDE3ZWM3YjhkOWRjZDNiYmNlODU1NGY2ZGUyYmZjNmQ5ZTZiOTMwMTkuLmZlYzdh
NjhiNDNjMTMwYTgwZmZmOTY4ZjgxMjVjNDM0MTFjMDcxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMS0xMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdA
YXBwbGUuY29tPgorCisgICAgICAgIERlLXZpcnR1YWxpemUgZGVzdHJ1Y3RvcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Q
cm94eVJ1bnRpbWVPYmplY3QuaDogUmVtb3ZlIGVtcHR5IHZpcnR1YWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW06CisKIDIwMTEtMTIt
MTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2ViS2l0IGNv
ZGUgc2hvdWxkbid0IGJlIGNhbGxpbmcgYXBwbHlDb21tYW5kIGRpcmVjdGx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMzBmMWViZjExZmYxODY5MWRmM2QxMjc4ZTRiOGE4NDMxNmJjMGU1ZS4uYWVjMDI2ZGVlOGUy
YzY0Y2Q3ZDdjMzYzZWRhZmE0ZjhkMjNjM2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTEyLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOiBBZGQgc3RhdGljIGRl
c3Ryb3kuCisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogd2lu
L1dlYktpdDIuZGVmOiBBZGQvcmVtb3ZlIG5lY2Vzc2FyeSBzeW1ib2xzLgorICAgICAgICAqIHdp
bi9XZWJLaXQyQ0ZMaXRlLmRlZjogRGl0dG8uCisKIDIwMTEtMTItMTMgIEFuZHJlYXMgS2xpbmcg
IDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMDI2NTIpOiBOZXcg
d2luZG93IG9wZW5zIHdpdGggemVybyBzaXplIGF0IHByb2R1YmFuY28uY29tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YjYwMWYzZWNhMzRkZTViMDAzNzMwMDc2M2U2YWIyNTdiZDE0YjQxMS4uMTM0OWU0ZjNmOGI3ZjVj
ZDIxM2NhYTJjODJkNTI5ZmNiYWE3YWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcApAQCAtNTksNiArNTksMTEgQEAgSlND
YWxsYmFja0NvbnN0cnVjdG9yOjp+SlNDYWxsYmFja0NvbnN0cnVjdG9yKCkKICAgICAgICAgSlND
bGFzc1JlbGVhc2UobV9jbGFzcyk7CiB9CiAKK3ZvaWQgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNDYWxsYmFja0NvbnN0cnVjdG9y
Kj4oY2VsbCktPkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6fkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcigp
OworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0Nh
bGxiYWNrKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBl
eGVjLT5jYWxsZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oCmluZGV4IGIzMjBhOTAxYzkwNDNjZmQwNzgyNzExYjUzMmQ4Mzg3NmVi
ODJiOTAuLjQzYTczYzMxNDM3MjY4NTgzNDM4YWVjZDhkYmI1ZWM3M2RhMGI4MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAt
NDIsNyArNDIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9
CiAgICAgCi0gICAgdmlydHVhbCB+SlNDYWxsYmFja0NvbnN0cnVjdG9yKCk7CisgICAgfkpTQ2Fs
bGJhY2tDb25zdHJ1Y3RvcigpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAg
ICAgSlNDbGFzc1JlZiBjbGFzc1JlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3M7IH0KICAgICBK
U09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2soKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrOyB9CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKaW5kZXgg
ZGQxMDZjY2VmMjNkYmM3ZDVlMDNmZGFkNDc4OWFiOTY5ZDFkM2I2Yy4uM2ZiYzAwNDcwNjJlMTcx
YTA5MzE3Mjk0OTEzNjFlZjg2NWZhOTBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja0Z1bmN0aW9uKTsK
K0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTQ2FsbGJhY2tGdW5jdGlvbik7CiAKIGNv
bnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrRnVuY3Rpb246OnNfaW5mbyA9IHsgIkNhbGxiYWNrRnVu
Y3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTQ2FsbGJhY2tGdW5jdGlvbikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5jcHAKaW5kZXggZmI5ZDczMDI5YzYzMDIwYjg3OTViOWFmZmYx
Nzg1YjNhY2ZlYTU2YS4uZWY5Y2I5MjVjMDkwNDExNzI1NjFhZTY0ODk4MmFiMDU1ODU1NWFiMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCkBA
IC01MSw2ICs1MSwxMiBAQCBTdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmpl
Y3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhH
bG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyAKIH0KIAordGVtcGxh
dGUgPGNsYXNzIFBhcmVudD4KK3ZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpLT5K
U0NhbGxiYWNrT2JqZWN0Ojp+SlNDYWxsYmFja09iamVjdCgpOworfQorCiB2b2lkIEpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250
ZXh0KQogewogICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0YXRpY19jYXN0PEpTQ2xhc3NSZWY+
KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aAppbmRleCA5MWZmNjI0OWRkZmY5MTBmYTVjMmIxMzVjZGQ1ZjYyOGQxYjIyYjE1Li5hNTFlZDNl
MDFkZWI4ZWRkMjE2MDk0YTAwODI0MjgzYWYzNzdjZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTc3LDYgKzE3Nyw4IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
Kik7CiAKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAppbmRleCBiN2U5MzY0OGZkYmE3NTNmOTlhZDVkNTZmNzIzZGM4NzRmY2I4ZjkxLi4yZTRjZTAy
ZTVhY2RmZDk0YTQxMDNhNjk0NGVkMDMwZWFjNjM4NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTEyNSw2ICsxMjUsNyBAQCBfX1pOM0pTQzExSlNCeXRl
QXJyYXkyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0
YXRlRVJLTgogX19aTjNKU0MxMUpTQnl0ZUFycmF5MjVnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pT
QzExSlNCeXRlQXJyYXkzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTFKU0J5
dGVBcnJheTZzX2luZm9FCitfX1pOM0pTQzExSlNCeXRlQXJyYXk3ZGVzdHJveUVQTlNfNkpTQ2Vs
bEUKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJl
RVBOM1dURjlCeXRlQXJyYXlFCiBfX1pOM0pTQzExUGFyc2VyQXJlbmE1cmVzZXRFdgogX19aTjNK
U0MxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfMTBTb3VyY2VDb2RlRVBOU183SlNW
YWx1ZUUKQEAgLTEzNCwxMyArMTM1LDEwIEBAIF9fWk4zSlNDMTJEYXRlSW5zdGFuY2UxNGZpbmlz
aENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVkCiBfX1pOM0pTQzEyRGF0ZUluc3RhbmNlNnNf
aW5mb0UKIF9fWk4zSlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVj
dHVyZUUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVudERhdGFEMkV2Ci1fX1pOM0pTQzEy
SlNHbG9iYWxEYXRhMTFqc0FycmF5VlB0ckUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMmNyZWF0
ZUxlYWtlZEVOU18xNVRocmVhZFN0YWNrVHlwZUVOU184SGVhcFNpemVFCi1fX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTJqc1N0cmluZ1ZQdHJFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJzdG9wU2Ft
cGxpbmdFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEzc3RhcnRTYW1wbGluZ0V2CiBfX1pOM0pT
QzEySlNHbG9iYWxEYXRhMTRkdW1wU2FtcGxlRGF0YUVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlND
MTJKU0dsb2JhbERhdGExNGpzRnVuY3Rpb25WUHRyRQogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0
cmVzZXREYXRlQ2FjaGVFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0c2hhcmVkSW5zdGFuY2VF
dgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE1ZHVtcFJlZ0V4cFRyYWNlRXYKQEAgLTE3OCw2ICsx
NzYsNyBAQCBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyNXNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGVFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzE0
SlNHbG9iYWxPYmplY3Q2c19pbmZvRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0N2Rlc3Ryb3lF
UE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0TWFj
aGluZVRocmVhZHMxNmFkZEN1cnJlbnRUaHJlYWRFdgogX19aTjNKU0MxNE1hcmtTdGFja0FycmF5
NmV4cGFuZEV2CkBAIC0xOTQsMTQgKzE5MywxNSBAQCBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVy
MjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUAog
X19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjhmaW5hbGl6ZUVOU182SGFuZGxlSU5TXzdVbmtub3du
RUVFUHYKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXJEMkV2CiBfX1pOM0pTQzE1Y3JlYXRlVHlw
ZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCi1fX1pOM0pTQzE2SW50ZXJuYWxG
dW5jdGlvbjEydnRhYmxlQW5jaG9yRXYKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTRmaW5p
c2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pT
QzE2SW50ZXJuYWxGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNkludGVy
bmFsRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTRK
U0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKK19fWk4zSlNDMTZKU05vbkZpbmFsT2JqZWN0
N2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRl
UHJvcGVydHlFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBf
X1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZp
ZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3Qx
OWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQ
cm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDMTZKU1Zhcmlh
YmxlT2JqZWN0N2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE2Y3JlYXRlUmFuZ2VFcnJv
ckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0MxNnNsb3dWYWxpZGF0ZUNl
bGxFUE5TXzE0SlNHbG9iYWxPYmplY3RFCiBfX1pOM0pTQzE2c2xvd1ZhbGlkYXRlQ2VsbEVQTlNf
NkpTQ2VsbEUKQEAgLTIxMSw2ICsyMTEsNyBAQCBfX1pOM0pTQzE3SlNBUElWYWx1ZVdyYXBwZXI2
c19pbmZvRQogX19aTjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5M2FkZEVQTjNXVEYxMFN0cmluZ0lt
cGxFCiBfX1pOM0pTQzE3Y3JlYXRlU3ludGF4RXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0
cmluZ0UKIF9fWk4zSlNDMThEZWJ1Z2dlckFjdGl2YXRpb24xNGZpbmlzaENyZWF0aW9uRVJOU18x
MkpTR2xvYmFsRGF0YUVQTlNfOEpTT2JqZWN0RQorX19aTjNKU0MxOERlYnVnZ2VyQWN0aXZhdGlv
bjZzX2luZm9FCiBfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUk5TXzEySlNHbG9iYWxE
YXRhRQogX19aTjNKU0MxOFByb3BlcnR5RGVzY3JpcHRvcjExc2V0V3JpdGFibGVFYgogX19aTjNK
U0MxOFByb3BlcnR5RGVzY3JpcHRvcjEyc2V0VW5kZWZpbmVkRXYKQEAgLTI2NSw2ICsyNjYsNyBA
QCBfX1pOM0pTQzRZYXJyOWludGVycHJldEVQTlMwXzE1Qnl0ZWNvZGVQYXR0ZXJuRVJLTlNfN1VT
dHJpbmdFampQaQogX19aTjNKU0M0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVOU184
Q2FsbFR5cGVFUktOU184Q2FsbERhdGFFUzJfUktOU183QXJnTGlzdEUKIF9fWk4zSlNDNkpTQ2Vs
bDExZ2V0Q2FsbERhdGFFUFMwX1JOU184Q2FsbERhdGFFCiBfX1pOM0pTQzZKU0NlbGwxNmdldENv
bnN0cnVjdERhdGFFUFMwX1JOU18xM0NvbnN0cnVjdERhdGFFCitfX1pOM0pTQzZKU0NlbGw3ZGVz
dHJveUVQUzBfCiBfX1pOM0pTQzZKU0NlbGw5Z2V0T2JqZWN0RXYKIF9fWk4zSlNDNkpTTG9jazEy
RHJvcEFsbExvY2tzQzFFTlNfMTRKU0xvY2tCZWhhdmlvckUKIF9fWk4zSlNDNkpTTG9jazEyRHJv
cEFsbExvY2tzQzFFUE5TXzlFeGVjU3RhdGVFCkBAIC0yNzYsMTMgKzI3OCwxMyBAQCBfX1pOM0pT
QzZKU0xvY2s5bG9ja0NvdW50RXYKIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQog
X19aTjNKU0M2UmVnRXhwNW1hdGNoRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRWlQ
TjNXVEY2VmVjdG9ySWlMbTMyRUVFCiBfX1pOM0pTQzZSZWdFeHA2Y3JlYXRlRVJOU18xMkpTR2xv
YmFsRGF0YUVSS05TXzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NFCi1fX1pOM0pTQzZSZWdFeHBE
MUV2CiBfX1pOM0pTQzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNs
b3RWaXNpdG9yRQogX19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9i
YWxEYXRhRQogX19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxE
YXRhRVJLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQzdKU0FycmF5MTVzZXRTdWJjbGFzc0RhdGFFUHYK
IF9fWk4zSlNDN0pTQXJyYXkyNWdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFUE5TXzZKU0NlbGxF
UE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDN0pTQXJyYXk2c19p
bmZvRQorX19aTjNKU0M3SlNBcnJheTdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M3SlNB
cnJheTlzZXRMZW5ndGhFagogX19aTjNKU0M3SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQ
TlNfOVN0cnVjdHVyZUUKIF9fWk4zSlNDN0pTQXJyYXlDMkVSTlNfMTJKU0dsb2JhbERhdGFFUE5T
XzlTdHJ1Y3R1cmVFCkBAIC0zMTMsNyArMzE1LDYgQEAgX19aTjNKU0M4SlNPYmplY3QxMmRlZmlu
ZVNldHRlckVQUzBfUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUzFfagogX19aTjNK
U0M4SlNPYmplY3QxMmxvb2t1cEdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckUKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRQotX19aTjNKU0M4SlNPYmplY3QxMnZ0YWJsZUFuY2hvckV2CiBfX1pO
M0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRv
ckUKIF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTZnZXRQcm9wZXJ0
eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVu
dW1lcmF0aW9uTW9kZUUKQEAgLTMzMCw2ICszMzEsNyBAQCBfX1pOM0pTQzhKU09iamVjdDI0Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
cgogX19aTjNKU0M4SlNPYmplY3QyNWdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFUE5TXzZKU0Nl
bGxFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpTT2JqZWN0
M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNW
YWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhKU09iamVjdDZzX2luZm9FCitf
X1pOM0pTQzhKU09iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4SlNPYmplY3Q5
Y2xhc3NOYW1lRVBLUzBfCiBfX1pOM0pTQzhKU1N0cmluZzZzX2luZm9FCiBfX1pOM0pTQzhQcm9m
aWxlcjEzc3RvcFByb2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQpAQCAtMzUw
LDcgKzM1Miw2IEBAIF9fWk4zSlNDOVN0cnVjdHVyZTNnZXRFUk5TXzEySlNHbG9iYWxEYXRhRVBO
M1dURjEwU3RyaW5nSW1wbEVSalJQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOVN0cnVjdHVyZTQwYWRk
UHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUVQUzBfUktOU18xMElkZW50aWZp
ZXJFalBOU182SlNDZWxsRVJtCiBfX1pOM0pTQzlTdHJ1Y3R1cmU2c19pbmZvRQogX19aTjNKU0M5
U3RydWN0dXJlQzFFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdK
U1ZhbHVlRVJLTlNfOFR5cGVJbmZvRVBLTlNfOUNsYXNzSW5mb0UKLV9fWk4zSlNDOVN0cnVjdHVy
ZUQxRXYKIF9fWk4zSlNDOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVOU18x
M0NvbnN0cnVjdFR5cGVFUktOU18xM0NvbnN0cnVjdERhdGFFUktOU183QXJnTGlzdEUKIF9fWk4z
SlNDZXFFUktOU183VVN0cmluZ0VQS2MKIF9fWk4zSlNDZ3RFUktOU183VVN0cmluZ0VTMl8KQEAg
LTYxOSwxNiArNjIwLDcgQEAgX19aTkszV1RGNlN0cmluZzh0b0ludFB0ckVQYgogX19aTkszV1RG
NlN0cmluZzh0b1VJbnQ2NEVQYgogX19aTkszV1RGNlN0cmluZzlzdWJzdHJpbmdFamoKIF9fWk5L
M1dURjhDb2xsYXRvcjdjb2xsYXRlRVBLdG1TMl9tCi1fX1pUVk4zSlNDMTJTdHJpbmdPYmplY3RF
Ci1fX1pUVk4zSlNDMTNKU0ZpbmFsT2JqZWN0RQotX19aVFZOM0pTQzE0SlNHbG9iYWxPYmplY3RF
Ci1fX1pUVk4zSlNDMTRTY29wZUNoYWluTm9kZUUKLV9fWlRWTjNKU0MxNUpTV3JhcHBlck9iamVj
dEUKIF9fWlRWTjNKU0MxNVdlYWtIYW5kbGVPd25lckUKLV9fWlRWTjNKU0MxNkludGVybmFsRnVu
Y3Rpb25FCi1fX1pUVk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0RQogX19aVFZOM0pTQzhEZWJ1Z2dl
ckUKLV9fWlRWTjNKU0M4SlNPYmplY3RFCi1fX1pUVk4zSlNDOEpTU3RyaW5nRQogX2pzY29yZV9m
YXN0bWFsbG9jX2ludHJvc3BlY3Rpb24KIF9rSlNDbGFzc0RlZmluaXRpb25FbXB0eQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBm
ZmQ1YTUyNDZjNTQyNjliZmIzNDBkYzFjNDViZjQ1OGExYjQzOThlLi5mYzUxNmFjMjMwMDU2ZmYz
ODZlMWZlMmQ2YzY4ZTBkOWQxY2MwNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMzMsMTEgKzMzLDkgQEAgRVhQT1JUUwog
ICAgID8/MURlYnVnZ2VyQEpTQ0BAVUFFQFhaCiAgICAgPz8xRHJvcEFsbExvY2tzQEpTTG9ja0BK
U0NAQFFBRUBYWgogICAgID8/MUpTR2xvYmFsRGF0YUBKU0NAQFFBRUBYWgotICAgID8/MUpTR2xv
YmFsT2JqZWN0QEpTQ0BAVUFFQFhaCi0gICAgPz8xSlNWYXJpYWJsZU9iamVjdEBKU0NAQFVBRUBY
WgorICAgPz8xSlNHbG9iYWxPYmplY3RASlNDQEBRQUVAWFoKICAgICA/PzFNdXRleEBXVEZAQFFB
RUBYWgogICAgID8/MVJlZkNvdW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRUBYWgotICAgID8/MVNj
b3BlQ2hhaW5Ob2RlQEpTQ0BARUFFQFhaCiAgICAgPz8xU291cmNlUHJvdmlkZXJDYWNoZUBKU0NA
QFFBRUBYWgogICAgID8/MVRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MVdURlRo
cmVhZERhdGFAV1RGQEBRQUVAWFoKQEAgLTE1OCw2ICsxNTYsOSBAQCBFWFBPUlRTCiAgICAgP2Rl
c3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxE
YXRhQDJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlv
bkBTdHJ1Y3R1cmVASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50
aWZpZXJAMkBAWgogICAgID9kZXN0cm95QEhlYXBASlNDQEBRQUVYWFoKKyAgICA/ZGVzdHJveUBK
U0J5dGVBcnJheUBKU0NAQFNBWFBBVkpTQ2VsbEAyQEBaCisgICAgP2Rlc3Ryb3lASlNHbG9iYWxP
YmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgorICAgID9kZXN0cm95QEpTTm9uRmluYWxPYmpl
Y3RASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgogICAgID9kZXRhY2hARGVidWdnZXJASlNDQEBVQUVY
UEFWSlNHbG9iYWxPYmplY3RAMkBAWgogICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAg
ICA/ZGlkVGltZU91dEBUaW1lb3V0Q2hlY2tlckBKU0NAQFFBRV9OUEFWRXhlY1N0YXRlQDJAQFoK
QEAgLTM2Myw5ICszNjQsNiBAQCBFWFBPUlRTCiAgICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxP
YmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3Zpc2l0
Q2hpbGRyZW5ASlNHbG9iYWxUaGlzQEpTQ0BAS0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JA
MkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFW
U2xvdFZpc2l0b3JAMkBAWgotICAgID92dGFibGVBbmNob3JASW50ZXJuYWxGdW5jdGlvbkBKU0NA
QEVBRVhYWgotICAgID92dGFibGVBbmNob3JASlNGaW5hbE9iamVjdEBKU0NAQEVBRVhYWgotICAg
ID92dGFibGVBbmNob3JASlNPYmplY3RASlNDQEBVQUVYWFoKICAgICA/d2FpdEBUaHJlYWRDb25k
aXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgogICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bkBXVEZAQFlBSElQQVBBWEBaCiAgICAgP3dyaXRhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NA
QFFCRV9OWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5jcHAKaW5kZXggMWUwM2NkMWZhOTY5ZjdhNmFlODE0Njg1MzFlOGRjOTZj
YWRmZTNhYy4uODBiZTMxMGI1OTUzMDc4YzZmZGI2YzU0NjgyNzI1ZmM4Mjc5ZTNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHAKQEAgLTMwLDYgKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFT
X1RSSVZJQUxfREVTVFJVQ1RPUihEZWJ1Z2dlckFjdGl2YXRpb24pOworCitjb25zdCBDbGFzc0lu
Zm8gRGVidWdnZXJBY3RpdmF0aW9uOjpzX2luZm8gPSB7ICJEZWJ1Z2dlckFjdGl2YXRpb24iLCAm
QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERlYnVnZ2VyQWN0aXZhdGlv
bikgfTsKKwogRGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLmRlYnVnZ2VyQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCA0
NGQwOWExODA3OGM0ZGZlMGY3YzcwM2NiMmE1NzYyMWEwOTYxYTY1Li42OGNjM2EzMWIyMThlMzgw
ZTZjY2JmZWNmMzBhYzgxMWYyNTI2YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCkBAIC01Miw2ICs1Miw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRl
ZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
IAorICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKwogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCAmc19pbmZvKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCAzMmUzOGUxZDg4YWRjOTAxMmE4N2ZiN2IxYjY5MTUzZGYzNjFlNTc3Li45ZWQ4NWM5
Mjg5MTA4MTVlNGE2MjU5ZmYxYzZkYmQ0OTE5ZDg5NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgdWlu
dDMyX3QgaW5kZXgsCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKIAotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkg
eworICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewogICAgICAgICBKU0FycmF5KiBhcnJh
eSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgaWYgKGFycmF5LT5jYW5TZXRJbmRleChp
bmRleCkpIHsKICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaW5kZXgs
IHZhbHVlKTsKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0QnlWYWwo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMyX3QgaW5kZXgsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBi
YXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGluZGV4
KSkgeworICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaW5kZXgpKSB7CiAgICAgICAgIEpTQnl0ZUFycmF5KiBi
eXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAvLyBGSVhNRTogdGhl
IEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0byBhbiBvcHRpbWl6ZWQgZm9ybSEKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgewpAQCAtMjY5LDE4ICsyNjksMTYgQEAgRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWQKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbChF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgpCiB7Ci0gICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLQogICAgIC8vIEZJ
WE1FOiB0aGUgSklUIHVzZWQgdG8gaGFuZGxlIHRoZXNlIGluIGNvbXBpbGVkIGNvZGUhCi0gICAg
aWYgKGlzSlNBcnJheShnbG9iYWxEYXRhLCBiYXNlKSAmJiBhc0FycmF5KGJhc2UpLT5jYW5HZXRJ
bmRleChpbmRleCkpCisgICAgaWYgKGlzSlNBcnJheShiYXNlKSAmJiBhc0FycmF5KGJhc2UpLT5j
YW5HZXRJbmRleChpbmRleCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNBcnJh
eShiYXNlKS0+Z2V0SW5kZXgoaW5kZXgpKTsKIAogICAgIC8vIEZJWE1FOiB0aGUgSklUc3R1YiB1
c2VkIHRvIHJlbGluayB0aGlzIHRvIGFuIG9wdGltaXplZCBmb3JtIQotICAgIGlmIChpc0pTU3Ry
aW5nKGdsb2JhbERhdGEsIGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRl
eCkpCisgICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldElu
ZGV4KGluZGV4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1N0cmluZyhiYXNl
KS0+Z2V0SW5kZXgoZXhlYywgaW5kZXgpKTsKIAogICAgIC8vIEZJWE1FOiB0aGUgSklUc3R1YiB1
c2VkIHRvIHJlbGluayB0aGlzIHRvIGFuIG9wdGltaXplZCBmb3JtIQotICAgIGlmIChpc0pTQnl0
ZUFycmF5KGdsb2JhbERhdGEsIGJhc2UpICYmIGFzQnl0ZUFycmF5KGJhc2UpLT5jYW5BY2Nlc3NJ
bmRleChpbmRleCkpCisgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZSkgJiYgYXNCeXRlQXJyYXko
YmFzZSktPmNhbkFjY2Vzc0luZGV4KGluZGV4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShhc0J5dGVBcnJheShiYXNlKS0+Z2V0SW5kZXgoZXhlYywgaW5kZXgpKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQoZXhlYywgaW5kZXgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCmluZGV4IDJiNTY4MDgwNGFjODlh
Njg1ZDA4NWUxN2Q4MzFiNTM0NThmYjFjZDEuLmM0NGU4YjczODkwY2ZiZmQ3ZmJlZjY4MjgzMTQx
ZjNkZjBmYjgzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIAotICAgIGlmIChpc0pTQXJyYXkoZ2xv
YmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkgeworICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8uYmFzZUdQUik7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8udmFsdWVUYWdHUFIpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyBi
b29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBj
b25zdCBJZGVudGlmaWVyCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgZmFpbHVyZUNhc2VzOwogICAgICAgICAKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChz
dHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihnbG9iYWxE
YXRhLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0
b3JhZ2VPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdHViSml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9y
YWdlLCBtX2xlbmd0aCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjk2NWQzY2E4YzllNDI3N2Q3YTAwMWU4
YmZiZDcyZDZiZTYyN2U2NS4uYWJhMDIzZWNiYzczYTJlNzVjMzYwMGE4NGQ1N2ViMjNkMmVhZWRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVEb3VibGVCcmFuY2goTm9kZSYgbm9kZSwgTm9kZUluZGV4IGJyYW5jaE5vZAogICAgICAgICBh
ZGRCcmFuY2gobV9qaXQuanVtcCgpLCBub3RUYWtlbik7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBi
cmFuY2hOb2RlSW5kZXgsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25D
aGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5
KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCiB7CiAgICAgTm9k
ZSYgYnJhbmNoTm9kZSA9IGF0KGJyYW5jaE5vZGVJbmRleCk7CiAgICAgQmxvY2tJbmRleCB0YWtl
biA9IGJyYW5jaE5vZGUudGFrZW5CbG9ja0luZGV4KCk7CkBAIC04MjQsOSArODI0LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9k
ZSwgTm9kZUluZGV4IGJyYW5jaE4KICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAg
IAogICAgIGlmICghcHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIGlmICghcHJl
ZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKQotICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIAogICAgIGFkZEJyYW5jaChtX2ppdC5i
cmFuY2hQdHIoY29uZGl0aW9uLCBvcDFHUFIsIG9wMkdQUiksIHRha2VuKTsKICAgICBpZiAobm90
VGFrZW4gIT0gKG1fYmxvY2sgKyAxKSkKQEAgLTg4NiwxMSArODg2LDExIEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlJiBub2RlLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hCiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICB1c2Uobm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21w
YXJlRXEgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoYXQobm9kZS5jaGlsZDEo
KSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2Jq
ZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpz
RmluYWxPYmplY3RWUHRyLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CisgICAgICAgICAgICBj
b21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0Zp
bmFsT2JqZWN0OjpzX2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgICAg
IHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChub2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVj
dWxhdGVBcnJheShhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5k
ZXgsIG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsIGlzQXJyYXlQcmVkaWN0aW9uKTsK
KyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5v
ZGVJbmRleCwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOwogICAgICAgICAg
ICAgdXNlKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwog
ICAgICAgICB9IGVsc2UKQEAgLTEwNjQsMTIgKzEwNjQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBl
bHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5n
cHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5
dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKQEAgLTEwNzksNDIgKzEwNzksNDIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURl
c2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigp
Lm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBl
bHNlIGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAu
Z3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
LmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX2Ns
YXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQxNkFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRy
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51
aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlm
IChpc1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigp
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNz
SW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlm
IChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2Ns
YXNzSW5mbykpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKQpAQCAtMTEyNCwxMyArMTEyNCwxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoKQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5
dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVh
blByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKICAgICAgICAgZWxzZSBpZiAo
aXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CkBAIC0xMTM4LDQ5ICsxMTM4
LDQ5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3Jp
cHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIo
KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRy
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVz
Y3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9u
KHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkp
OwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1
YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZB
cnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZv
KSkpOwogICAgICAgICB9ICBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0
ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNj
cmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSAgZWxzZSBpZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3By
KCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRl
bXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9y
KCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAg
IH0gICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5t
X3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAK
ICNlbmRpZgogICAgIH0KQEAgLTE0OTUsNyArMTQ5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5
LCBOCiAgICAgTm9kZUluZGV4IHZhbHVlSW5kZXggPSBub2RlLmNoaWxkMygpOwogICAgIAogICAg
IGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShiYXNlSW5kZXgpLm1f
dHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkp
OworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNf
aW5mbykpKTsKICAgICBHUFJUZW1wb3JhcnkgdmFsdWU7CiAgICAgR1BSUmVnIHZhbHVlR1BSOwog
CkBAIC0xNTg5LDcgKzE1ODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUxlbmd0aChjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzYwogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgCiAgICAgaWYgKG5lZWRzU3BlY3VsYXRp
b25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5t
X2NsYXNzSW5mbykpKTsKICAgICAKICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgZGVzY3JpcHRvci5tX2xlbmd0aE9mZnNldCksIHJlc3VsdEdQUik7CiAg
ICAgCkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJgogICAgIE5v
ZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGlsZDMoKTsKICAgICAKICAgICBpZiAoc3BlY3Vs
YXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKLSAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
KSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHZhbHVl
OwogICAgIEdQUlJlZyB2YWx1ZUdQUjsKICAgICAKQEAgLTE3NzUsNyArMTc3NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShjb25zdCBU
eXBlZEFycmF5RGVzY3JpcHRvCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRo
aXMsIHZhbHVlSW5kZXgpOwogICAgIAogICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAh
PSBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2UpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0
cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5t
X2NsYXNzSW5mbykpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
IApAQCAtMjE1Miw5ICsyMTUyLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2Rl
JiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICBlbHNl
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5v
ZGUuY2hpbGQyKCkpKSkKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91Ymxl
Q29uZGl0aW9uKTsKICAgICBlbHNlIGlmIChub2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpz
aG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGls
ZDIoKSkpKQotICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAg
ICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywg
aXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOwogICAgIGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFy
ZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChu
b2RlLmNoaWxkMigpKSkpCi0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCBtX2pp
dC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAg
IGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5UHJl
ZGljdGlvbik7CiAgICAgZWxzZQogICAgICAgICBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29t
cGFyZShub2RlLCBjb25kaXRpb24sIG9wZXJhdGlvbik7CiAgICAgCkBAIC0yMjg2LDI2ICsyMjg2
LDI2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlJiBub2RlKQog
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChhdChub2RlLmNoaWxkMSgp
KSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7CiAgICAgICAgIE5vZGVJbmRleCBicmFuY2hOb2RlSW5k
ZXggPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoTm9kZUluZGV4
ICE9IE5vTm9kZSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHko
bm9kZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RW
UHRyLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNo
aWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIG1f
Y29tcGlsZUluZGV4ID0gYnJhbmNoTm9kZUluZGV4OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KLSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsIG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsK
KyAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGls
ZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewogICAgICAgICBOb2RlSW5kZXggYnJhbmNoTm9k
ZUluZGV4ID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaE5vZGVJ
bmRleCAhPSBOb05vZGUpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFs
aXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0
ciwgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5
UHJlZGljdGlvbik7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICB1c2Uobm9kZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJyYW5j
aE5vZGVJbmRleDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAg
IGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlW
UHRyLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShu
b2RlLCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0yMzMxLDcgKzIzMzEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlJiBub2RlKQogICAg
IEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgaWYgKCFpc1N0
cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc3RvcmFn
ZVJlZyk7CiAgICAgICAgIApAQCAtMjM0MSw1MSArMjM0MSw1MSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlJiBub2RlKQogICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmlu
Z0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKICAgICAgICAgaWYgKCFp
c0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVB
cnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNCeXRlQXJyYXk6Om9mZnNldE9mU3Rv
cmFnZSgpKSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3Jp
cHRvcigpOwogICAgICAgICBpZiAoIWlzSW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNj
cmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9y
YWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJh
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlE
ZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNJbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3Iu
bV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlw
ZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDMy
QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNJbnQzMkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2Ny
aXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKICAgICAgICAgY29u
c3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNVaW50OEFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkp
OwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CiAgICAg
ICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFs
RGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc1VpbnQxNkFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xh
c3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAg
fSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgp
KSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9q
aXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFp
c1VpbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlw
dG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJl
Zyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9h
dDMyQXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpOwogICAg
ICAgICBpZiAoIWlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1f
dnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0
KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRT
cGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3Jp
cHRvcigpOwogICAgICAgICBpZiAoIWlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihk
ZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9z
dG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFp
c0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRy
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZVJl
Zyk7CiAgICAgfQogICAgIHN0b3JhZ2VSZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4
IGZmZWZmMDE4OTUzY2JkMjllMGQ0MzkwNDBjZWIwNDFhODhiYTE4YjQuLjAzMDI1NTcwZWExYTcw
ZTc5Y2RhOTNhMTE1MzQwM2ZjZjQ2ZGU2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE5NTEsMTIgKzE5NTEsMTIgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZH
T3BlcmF0aW9uX0VKSik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKE5v
ZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSYsIE5v
ZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwot
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJbmRleCBi
cmFuY2hOb2RlSW5kZXgsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGVja2VyKTsKLSAgICB2b2lk
IGNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiwgdm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZWNr
ZXIpOworICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJ
bmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyosIFByZWRpY3Rpb25DaGVja2Vy
KTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiwgY29uc3QgQ2xhc3NJbmZv
KiwgUHJlZGljdGlvbkNoZWNrZXIpOwogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKE5vZGUmKTsK
LSAgICB2b2lkIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggdmFsdWUs
IHZvaWQqIHZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOworICAgIHZvaWQgY29tcGls
ZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZv
KiwgYm9vbCBuZWVkU3BlY3VsYXRpb25DaGVjayk7CiAgICAgdm9pZCBjb21waWxlTG9naWNhbE5v
dChOb2RlJik7Ci0gICAgdm9pZCBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggdmFs
dWUsIEJsb2NrSW5kZXggdGFrZW4sIEJsb2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJv
b2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOworICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFu
Y2goTm9kZUluZGV4IHZhbHVlLCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2Vu
LCBjb25zdCBDbGFzc0luZm8qLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKICAgICB2b2lk
IGVtaXRCcmFuY2goTm9kZSYpOwogICAgIAogICAgIHZvaWQgY29tcGlsZUludGVnZXJDb21wYXJl
KE5vZGUmLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0yMDExLDgg
KzIwMTEsOCBAQCBwcml2YXRlOgogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiksIHNjcmF0Y2hHUFIpOwogICAgICAgICBtX2ppdC5zdG9yZVB0
cihzY3JhdGNoR1BSLCAmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsKICAgICAgICAgCi0gICAg
ICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIHZ0YWJsZQotICAgICAgICBtX2ppdC5zdG9y
ZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
RmluYWxPYmplY3RWUHRyKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSKSk7Cisg
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIGNsYXNzSW5mbyBwb2ludGVyCisgICAg
ICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0ZpbmFs
T2JqZWN0OjpzX2luZm8pLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUg
dGhlIG9iamVjdCdzIGluaGVyaXRvcklELgogICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmNGY0
MjY2NzU1NTBjNGY4ZjZjMDQyN2FjNTEwNjk1ODkzY2IwNzI5Li5lM2RlMjJlZjI5NTA4NmFmNWFi
ZWFlNjYzMWJhNDc1MDdjMTg4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpJ
VENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9w
ZXJhbmQmIG9wLCBGUFJSZWcgcmVzCiAgICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZw
dHIsIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CkBAIC0xNzIxLDkgKzE3MjEsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwg
dm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZQogICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0g
cmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNo
aWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2
cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNs
YXNzSW5mbykpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgbV9qaXQubW92
ZShJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSYgbm9kZSkKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5k
ZXgpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2lj
YWxOb3QoTm9kZUluZGV4IG5vZGVJbmRleCwgdm9pZCogdnB0ciwgYm9vbCBuZWVkU3BlY3VsYXRp
b25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNh
bE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9v
bCBuZWVkU3BlY3VsYXRpb25DaGVjaykKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlSW5kZXgpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAt
MTc5Myw3ICsxNzkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5kZXgsIHZvaWQqIHYKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
ICAgICBpZiAobmVlZFNwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2
YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgCkBAIC0xODIyLDExICsxODIyLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2Jq
ZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChu
b2RlLmNoaWxkMSgpLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCAhaXNG
aW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUu
Y2hpbGQxKCksICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVBcnJheU9yT3RoZXIoKSkgewotICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3Qobm9kZS5jaGlsZDEoKSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgIWlzQXJy
YXlPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSk7CisgICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgp
LCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CkBAIC0x
ODcxLDcgKzE4NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChO
b2RlJiBub2RlKQogICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxl
SW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2Nr
SW5kZXggdGFrZW4sIEJsb2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNw
ZWN1bGF0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJy
YW5jaChOb2RlSW5kZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5v
dFRha2VuLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9vbCBuZWVkU3BlY3VsYXRpb25D
aGVjaykKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlSW5kZXgpOwogICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMTg4MSw3ICsxODgxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRl
eCwgQmxvY2tJbmRleCB0YWsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxs
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICBpZiAobmVlZFNwZWN1bGF0aW9u
Q2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXls
b2FkR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQ
YXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0lu
Zm8pKSk7CiAgICAgYWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgdGFrZW4pOwogICAgIAogICAgIG5v
dENlbGwubGluaygmbV9qaXQpOwpAQCAtMTkyMSw5ICsxOTIxLDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEJyYW5jaChOb2RlJiBub2RlKQogCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0
ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNo
KG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0Zp
bmFsT2JqZWN0VlB0ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGVtaXRPYmplY3RPck90aGVy
QnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxPYmplY3Q6OnNf
aW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0Lmdsb2JhbERhdGEo
KS0+anNBcnJheVZQdHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5j
aChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0FycmF5OjpzX2luZm8sICFpc0Fy
cmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlTnVt
YmVyKCkpIHsKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSkgewogICAgICAgICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsKQEAgLTIwODAsMTQg
KzIwODAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgIGlm
ICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQ
UiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNB
cnJheVZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAg
ICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgfSBlbHNlIGlmIChp
c0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBH
UFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQ
dHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Vs
bEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAg
ICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNC
b29sZWFuUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewpAQCAtMjY4NSw3ICsyNjg1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAg
IEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIGlmICghaXNBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKICAgICAgICAgfQogCkBA
IC0yODA0LDcgKzI4MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJv
cGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAg
ICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXks
IHdlIGNhbiBza2lwIHRoZSBjaGVjay4KICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
UmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykp
KTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBwcm9wZXJ0eS51c2UoKTsKQEAgLTI5
NDgsNyArMjk0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlVGFnR1BSLCBub2RlLmNoaWxkMigp
LCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0
aEdQUik7CiAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFy
cmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0yOTk0LDcgKzI5
OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0gc3RvcmFnZUxlbmd0aC5ncHIoKTsKICAgICAgICAg
CiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5Ojpz
dG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzE1Niw3ICszMTU2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGFscmVhZHlQcmltaXRpdmU7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKLSAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxv
YWRHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9QcmltaXRp
dmUsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgb3AxVGFnR1BSLCBvcDFQYXlsb2Fk
R1BSKTsKQEAgLTMyNzcsNyArMzI3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghaXNPYmplY3RQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwodGhpc1ZhbHVl
R1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0
aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6
OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5m
bykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIs
IHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxl
SW5kZXgpOwpAQCAtMzMyMiw3ICszMzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICAvLyBkbyB0aGUgc2xvdyAoc3RydWN0dXJlLWJhc2VkKSBj
aGVjay4KICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFs
T2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICghaXNGaW5hbE9iamVjdFByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChwcm90b0dQ
UiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cikpKTsKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKHByb3RvR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
SlNGaW5hbE9iamVjdDo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOwpAQCAtMzQ5NCw3ICszNDk0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFp
c0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRy
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSks
IHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHJl
c3VsdEdQUik7CkBAIC0zNTEzLDcgKzM1MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzU3RyaW5nUHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAg
ICAgCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CiAKQEAgLTM1MjksNyAr
MzUyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlm
ICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNC
eXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJh
eTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUo
KSksIHJlc3VsdEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCAyZmE2NmIwYzQyM2IwMmEwNmQ3ZmI4NTI2NjY0NDAyM2Ex
ZjMyNzE4Li40ODkxMjVmYjg2MWFmMDUyNWYwODI3NjE3ZjY1NTE0OTNjNGVhMDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTE3MzcsNyArMTczNyw3IEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHCiAgICAgcmV0dXJuIG5v
dE51bWJlcjsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5
KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVj
aykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2Rl
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlv
bkNoZWNrKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7
CkBAIC0xNzQ4LDkgKzE3NDgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZQogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgCiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hl
Y2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsK
KyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgaWYgKCFw
cmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCi0g
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgbm9k
ZS5jaGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFsc2VDYXNlID0gbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxR1BSLCBvcDJHUFIpOwogICAgIG1faml0
Lm1vdmUoSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKQEAgLTE4MDgsNyArMTgwOCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlJiBub2RlKQogICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9k
ZUluZGV4LCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2Rl
SW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBib29sIG5lZWRTcGVjdWxhdGlvbkNo
ZWNrKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVJbmRleCk7CiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTE4MTcsNyArMTgxNyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9k
ZUluZGV4LCB2b2lkICp2CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiks
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykp
KTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1
ZUZhbHNlKSksIHJlc3VsdEdQUik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAKQEAgLTE4NDgsMTEgKzE4NDgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RP
ck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUu
Y2hpbGQxKCksIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFpc0ZpbmFs
T2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGls
ZDEoKSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFy
cmF5T3JPdGhlcigpKSB7Ci0gICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChu
b2RlLmNoaWxkMSgpLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAhaXNBcnJheU9y
T3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsK
KyAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZK
U0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKQEAgLTE5MTIs
NyArMTkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUm
IG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4LCBEYXRh
Rm9ybWF0SlNCb29sZWFuLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggbm9kZUlu
ZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCB2b2lkICp2cHRyLCBi
b29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVj
dE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWtlbiwgQmxv
Y2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNw
ZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZUlu
ZGV4KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTE5MjEsNyArMTkyMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRl
eCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChuZWVkU3BlY3Vs
YXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGNsYXNzSW5mbykpKTsKICAgICBhZGRCcmFuY2gobV9qaXQuanVtcCgpLCB0YWtlbik7CiAgICAg
CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC0xOTYxLDkgKzE5NjEsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBu
b1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewotICAgICAgICBlbWl0T2Jq
ZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZK
U0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAg
ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCBt
X2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCAmSlNBcnJh
eTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFs
c2U7CkBAIC0yMTEzLDE0ICsyMTEzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7
CiAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxH
UFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
QXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
SlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwg
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIg
PSBjZWxsLmdwcigpOwogICAgICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhjZWxsR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9j
YWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICB9
IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKQEAgLTI2ODgs
NyArMjY4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICAgICAgLy8g
RklYTUU6IEluIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSBzdWJzZXF1ZW50IGJ5X3ZhbCBhY2Nlc3Nl
cyB0byB0aGUgc2FtZSBiYXNlIGl0IG1pZ2h0IGhlbHAgdG8gY2FjaGUKQEAgLTI3OTksNyArMjc5
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
Ly8gQ2hlY2sgdGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250
YWluZWQgd2l0aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYg
d2UgaGF2ZSBwcmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAg
dGhlIGNoZWNrLgogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpT
QXJyYXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBwcm9wZXJ0
eS51c2UoKTsKQEAgLTI5NDMsNyArMjk0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCBu
b2RlLmNoaWxkMigpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQUiwg
c3RvcmFnZUxlbmd0aEdQUik7CiAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHN0b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5n
dGgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0yOTg2LDcgKzI5ODYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdlTGVu
Z3RoR1BSID0gc3RvcmFnZUxlbmd0aC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAK
ICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihB
cnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzEyOSw3ICsz
MTI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGFscmVhZHlQcmltaXRpdmU7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7Ci0gICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmFwcGVuZChtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
U3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0R1BSLCBvcDFHUFIpOwpAQCAtMzIz
OSw3ICszMjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKCFpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFs
dWVHUFIpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
U3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKCZK
U1N0cmluZzo6c19pbmZvKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIApAQCAtMzI4Myw3ICszMjgz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAv
LyBkbyB0aGUgc2xvdyAoc3RydWN0dXJlLWJhc2VkKSBjaGVjay4KICAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAg
IGlmICghaXNGaW5hbE9iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyhwcm90b0dQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFs
T2JqZWN0VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKHByb3RvR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9HUFIs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOwpAQCAtMzQ0Niw3ICsz
NDQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYg
KCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAg
ICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRP
RihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHJlc3VsdEdQUik7CkBAIC0zNDY1LDcgKzM0NjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlz
U3RyaW5nUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAg
ICAgCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CiAKQEAgLTM0ODEsNyAr
MzQ4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlm
ICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19p
bmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCByZXN1bHRH
UFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCmluZGV4IDA2YzBhZmRkM2VmNGQxMDgyMWIxMDZiYzIzYjczYmFmMWEw
Njc2YzAuLjYxZWJhMDhhNDljNjZmZTkyMzYzYzUwN2E2MzE5Yzk3ZDhjNzE4OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgSGVhcDo6SGVhcChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhlYXBTaXplKQogICAgICwgbV9hY3Rp
dml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKICAg
ICAsIG1fbWFjaGluZVRocmVhZHModGhpcykKICAgICAsIG1fc2hhcmVkRGF0YShnbG9iYWxEYXRh
KQotICAgICwgbV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEsIGdsb2JhbERhdGEtPmpzQXJyYXlW
UHRyLCBnbG9iYWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciwgZ2xvYmFsRGF0YS0+anNTdHJpbmdW
UHRyKQorICAgICwgbV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEpCiAgICAgLCBtX2hhbmRsZUhl
YXAoZ2xvYmFsRGF0YSkKICAgICAsIG1faXNTYWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwgbV9n
bG9iYWxEYXRhKGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcAppbmRleCAzZjRmZGE3NmNjNGUzNzFmNzRkNmRjYzczNWM5YjkzODQ2M2VmOWQ1Li4yODlj
NTQxMmY5NTE5YjAxMmZiNzdkMTY0OWZlYTRlZmNmZTNiZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE1hcmtTdGFj
a0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20oTWFya1N0YWNrQXJyYXkmIG90aGVyKQogdm9pZCBN
YXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFpbigpCiB7CiAgICAgV1RG
OjpyZWdpc3RlckdDVGhyZWFkKCk7Ci0gICAgU2xvdFZpc2l0b3Igc2xvdFZpc2l0b3IoKnRoaXMs
IG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIsIG1fZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVjdFZQ
dHIsIG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKTsKKyAgICBTbG90VmlzaXRvciBzbG90Vmlz
aXRvcigqdGhpcyk7CiAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHNsb3RWaXNpdG9y
KTsKICAgICBzbG90VmlzaXRvci5kcmFpbkZyb21TaGFyZWQoU2xvdFZpc2l0b3I6OlNsYXZlRHJh
aW4pOwogfQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoQ29uc2Vy
dmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzKQogICAgICAgICBpbnRlcm5hbEFwcGVuZChy
b290c1tpXSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgSlNDZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFsT2Jq
ZWN0VlB0ciwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0cikKK0FMV0FZU19J
TkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvciwgY29u
c3QgSlNDZWxsKiBjZWxsKQogewogI2lmIEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCiAg
ICAgbV92aXNpdGVkVHlwZUNvdW50cy5jb3VudChjZWxsKTsKQEAgLTMwMiwxNyArMzAyLDE3IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvciwgY29uc3QgSlNDZWxsKiBjZWxsCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2Vs
bCkpOwogCi0gICAgaWYgKGNlbGwtPnZwdHIoKSA9PSBqc1N0cmluZ1ZQdHIpIHsKKyAgICBpZiAo
aXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25z
dF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChjZWxsLT52cHRyKCkgPT0ganNGaW5hbE9iamVjdFZQdHIpIHsKKyAgICBpZiAo
aXNKU0ZpbmFsT2JqZWN0KGNlbGwpKSB7CiAgICAgICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGNlbGwtPnZwdHIoKSA9PSBqc0FycmF5VlB0cikgeworICAgIGlmIChp
c0pTQXJyYXkoY2VsbCkpIHsKICAgICAgICAgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihjb25zdF9j
YXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTMzOCwxNiArMzM4LDEyIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKIHsKICAgICBBU1NF
UlQobV9pc0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0
ciA9IG1fanNGaW5hbE9iamVjdFZQdHI7Ci0gICAgdm9pZCoganNBcnJheVZQdHIgPSBtX2pzQXJy
YXlWUHRyOwotICAgIHZvaWQqIGpzU3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRyOwotCiAjaWYg
RU5BQkxFKFBBUkFMTEVMX0dDKQogICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vy
cyA+IDEpIHsKICAgICAgICAgd2hpbGUgKCFtX3N0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgbV9zdGFjay5yZWZpbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY291bnRkb3du
ID0gSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOyBtX3N0
YWNrLmNhblJlbW92ZUxhc3QoKSAmJiBjb3VudGRvd24tLTspCi0gICAgICAgICAgICAgICAgdmlz
aXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVMYXN0KCksIGpzRmluYWxPYmplY3RWUHRy
LCBqc0FycmF5VlB0ciwganNTdHJpbmdWUHRyKTsKKyAgICAgICAgICAgICAgICB2aXNpdENoaWxk
cmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSk7CiAgICAgICAgICAgICBkb25hdGVLbm93
blBhcmFsbGVsKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNTksNyArMzU1LDcgQEAgdm9p
ZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogICAgIHdoaWxlICghbV9zdGFjay5pc0VtcHR5KCkpIHsK
ICAgICAgICAgbV9zdGFjay5yZWZpbGwoKTsKICAgICAgICAgd2hpbGUgKG1fc3RhY2suY2FuUmVt
b3ZlTGFzdCgpKQotICAgICAgICAgICAgdmlzaXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1v
dmVMYXN0KCksIGpzRmluYWxPYmplY3RWUHRyLCBqc0FycmF5VlB0ciwganNTdHJpbmdWUHRyKTsK
KyAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3ZlTGFzdCgpKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXggYzUw
ODAxOTQ4ODcwMTljOWE4Y2Q0OGIzNzM3NzZkOGE4Zjk3OGRhNy4uMDNkZWVhYjg3OWJkMjEyNzNm
YjAxYjRkNzM4MTRlOWExMjBjYmU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEhlYXBSb290VmlzaXRvcjsgLy8gQWxsb3dlZCB0byBtYXJrIGEgSlNWYWx1ZSogb3Ig
SlNDZWxsKiogZGlyZWN0bHkuCiAKICAgICBwdWJsaWM6Ci0gICAgICAgIE1hcmtTdGFjayhNYXJr
U3RhY2tUaHJlYWRTaGFyZWREYXRhJiwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxP
YmplY3RWUHRyLCB2b2lkKiBqc1N0cmluZ1ZQdHIpOworICAgICAgICBNYXJrU3RhY2soTWFya1N0
YWNrVGhyZWFkU2hhcmVkRGF0YSYpOwogICAgICAgICB+TWFya1N0YWNrKCk7CiAKICAgICAgICAg
dm9pZCBhcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmKTsKQEAgLTI2Nyw5ICsyNjcsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTWFya1N0YWNrQXJyYXkg
bV9zdGFjazsKLSAgICAgICAgdm9pZCogbV9qc0FycmF5VlB0cjsKLSAgICAgICAgdm9pZCogbV9q
c0ZpbmFsT2JqZWN0VlB0cjsKLSAgICAgICAgdm9pZCogbV9qc1N0cmluZ1ZQdHI7CiAgICAgICAg
IEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7IC8vIEhhbmRsZS1vd25pbmcgZGF0YSBzdHJ1
Y3R1cmVzIG5vdCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KICAgICAgICAgCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMjg2LDExICsyODMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgbV9zaGFyZWQ7CiAgICAgfTsKIAot
ICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRh
JiBzaGFyZWQsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciwgdm9p
ZCoganNTdHJpbmdWUHRyKQorICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCiAgICAgICAgIDogbV9zdGFjayhzaGFyZWQubV9z
ZWdtZW50QWxsb2NhdG9yKQotICAgICAgICAsIG1fanNBcnJheVZQdHIoanNBcnJheVZQdHIpCi0g
ICAgICAgICwgbV9qc0ZpbmFsT2JqZWN0VlB0cihqc0ZpbmFsT2JqZWN0VlB0cikKLSAgICAgICAg
LCBtX2pzU3RyaW5nVlB0cihqc1N0cmluZ1ZQdHIpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQogICAgICAg
ICAsIG1faXNEcmFpbmluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmNwcAppbmRleCBkNmZiODUzYTFjOTA0NmFmMjczOTQ3Y2U4NWExZjM1ZDU3ZDA3NmY3
Li5mMjUyOWZkNGVmZDQ0NTdmMDMyMTNkN2Q0ZjVmNzg1YjY2OGVlYjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC02MCwxOCArNjAsMTcgQEAgTWFy
a2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2Nh
dGlvbiwgSGVhcCogaGVhcCwgc2kKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9O
KHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IoSlND
ZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cikKK2lubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwpCiB7CiAgICAgLy8gQSBwcmV2aW91cyBl
YWdlciBzd2VlcCBtYXkgYWxyZWFkeSBoYXZlIHJ1biBjZWxsJ3MgZGVzdHJ1Y3Rvci4KICAgICBp
ZiAoY2VsbC0+aXNaYXBwZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdm9pZCogdnB0ciA9
IGNlbGwtPnZwdHIoKTsKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgIG1f
aGVhcC0+bV9kZXN0cm95ZWRUeXBlQ291bnRzLmNvdW50VlB0cih2cHRyKTsKICNlbmRpZgotICAg
IGlmICh2cHRyICE9IGpzRmluYWxPYmplY3RWUHRyKQotICAgICAgICBjZWxsLT5+SlNDZWxsKCk7
CisgICAgaWYgKGNlbGwtPmNsYXNzSW5mbygpICE9ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCisg
ICAgICAgIGNlbGwtPm1ldGhvZFRhYmxlKCktPmRlc3Ryb3koY2VsbCk7CiAKICAgICBjZWxsLT56
YXAoKTsKIH0KQEAgLTg1LDcgKzg0LDYgQEAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBNYXJrZWRC
bG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgpCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUg
YWxsb2NhdGlvbiBjb2RlIG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQogICAgIC8vIG9y
ZGVyIG9mIHRoZSBmcmVlIGxpc3QuCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAwOwotICAgIHZvaWQq
IGpzRmluYWxPYmplY3RWUHRyID0gbV9oZWFwLT5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RW
UHRyOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQgJiYg
bV9tYXJrcy5nZXQoaSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTk1LDcgKzkzLDcgQEAg
TWFya2VkQmxvY2s6OkZyZWVDZWxsKiBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoYmxvY2tTdGF0ZSAhPSBOZXcpCi0g
ICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsLCBqc0ZpbmFsT2JqZWN0VlB0cik7CisgICAg
ICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2RlID09
IFN3ZWVwVG9GcmVlTGlzdCkgewogICAgICAgICAgICAgRnJlZUNlbGwqIGZyZWVDZWxsID0gcmVp
bnRlcnByZXRfY2FzdDxGcmVlQ2VsbCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmgKaW5kZXggYWRjNjU3MjY0MjA3MWFmM2U3MTdjYWI2YzhhZmZjZmVjZmIz
Nzc0YS4uOGM2NjVkZDViZWQ1YjI0MTNkZDMwMjE3ZmY3NGU0MDA3YWYxYzk3YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0xNjUsNyArMTY1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZCYsIEhlYXAqLCBzaXplX3QgY2VsbFNpemUpOwogICAgICAgICBBdG9tKiBhdG9tcygpOwog
ICAgICAgICBzaXplX3QgYXRvbU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAgICAgIHZvaWQgY2Fs
bERlc3RydWN0b3IoSlNDZWxsKiwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIpOworICAgICAgICB2
b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOwogICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRl
LCBTd2VlcE1vZGU+IEZyZWVDZWxsKiBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAgICAgIAogI2lm
IEVOQUJMRShHR0MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAppbmRl
eCBhNDYxNzgxNGFlN2UyZjY4YWIzMjQ4OWVlOWVjZWE1YWViOGM2NjEyLi5iYjMwMWZiZjE5Yzg1
NTM0N2Y5OGZmOWNjMzNkMTEzMzQ0Y2QzODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIFNsb3RW
aXNpdG9yIDogcHVibGljIE1hcmtTdGFjayB7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBSb290Vmlz
aXRvcjsKIHB1YmxpYzoKLSAgICBTbG90VmlzaXRvcihNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRh
Jiwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc1N0
cmluZ1ZQdHIpOworICAgIFNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmKTsK
IAogICAgIHZvaWQgZG9uYXRlKCkKICAgICB7CkBAIC03MSw4ICs3MSw4IEBAIHByaXZhdGU6CiAg
ICAgfQogfTsKIAotaW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihNYXJrU3RhY2tUaHJl
YWRTaGFyZWREYXRhJiBzaGFyZWQsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2Jq
ZWN0VlB0ciwgdm9pZCoganNTdHJpbmdWUHRyKQotICAgIDogTWFya1N0YWNrKHNoYXJlZCwganNB
cnJheVZQdHIsIGpzRmluYWxPYmplY3RWUHRyLCBqc1N0cmluZ1ZQdHIpCitpbmxpbmUgU2xvdFZp
c2l0b3I6OlNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmIHNoYXJlZCkKKyAg
ICA6IE1hcmtTdGFjayhzaGFyZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAppbmRleCBiOThkMWE1MTE3NTg3NjBlMDYwYWRkN2U5MTU0
YjI5MWRiZWZhYjE0Li5hY2I0OTQwMzRmYThiZDc3ZDAyMjc3MTE3NDdiZTA1M2RjZTExNTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwCkBAIC01
NCw3ICs1NCw4IEBAIHZvaWQgVlRhYmxlU3BlY3RydW06OmNvdW50VlB0cih2b2lkKiB2VGFibGVQ
b2ludGVyKQogCiB2b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudChKU0NlbGwqIGNlbGwpCiB7Ci0g
ICAgY291bnRWUHRyKGNlbGwtPnZwdHIoKSk7CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gY2hh
bmdlIHRoaXMgY2xhc3MgdG8gY291bnQgQ2xhc3NJbmZvcyByYXRoZXIgdGhhbiB2cHRycworICAg
IFVOVVNFRF9QQVJBTShjZWxsKTsKIH0KIAogdm9pZCBWVGFibGVTcGVjdHJ1bTo6ZHVtcChGSUxF
KiBvdXRwdXQsIGNvbnN0IGNoYXIqIGNvbW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA0OWJmZGQwNGYzMGMyMGM1N2Iz
YzU3MmEzNTBiYjkzNGY4Zjg0M2QyLi5jZGFmYzgzZDFiNDE2NmY3ZTVlMDBmMDk1NzYxNjliNjJk
MTQ1NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdzKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgSlNWYWx1ZQog
ICAgICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogICAgIH0KIAotICAgIGlmIChpc0pTQXJyYXko
JmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKGlzSlNBcnJh
eShhcmd1bWVudHMpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShhcmd1bWVu
dHMpOwogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFycmF5LT5sZW5ndGgoKTsKICAgICAg
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUt
PnJlZ2lzdGVycygpICsgZmlyc3RGcmVlUmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9mZnNldEZvcihh
cmdDb3VudCArIDEpKTsKQEAgLTE1MDgsMTMgKzE1MDgsMTIgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJs
b2NrKgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFs
RGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKSB7CisgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5
TmFtZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgdlBD
WzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9hcnJheV9sZW5ndGgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9w
ZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgaWYg
KGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9nZXRf
c3RyaW5nX2xlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMjE4LDcgKzMyMTcs
NyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGludCBiYXNlID0gdlBDWzJdLnUu
b3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBjYWxsRnJhbWUtPnIoYmFzZSku
anNWYWx1ZSgpOwotICAgICAgICBpZiAoTElLRUxZKGlzSlNBcnJheShnbG9iYWxEYXRhLCBiYXNl
VmFsdWUpKSkgeworICAgICAgICBpZiAoTElLRUxZKGlzSlNBcnJheShiYXNlVmFsdWUpKSkgewog
ICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjYWxs
RnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKGFzQXJyYXkoYmFzZVZhbHVlKS0+bGVu
Z3RoKCkpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2FycmF5X2xl
bmd0aCk7CkBAIC0zMjQyLDcgKzMyNDEsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAg
ICAgIGludCBiYXNlID0gdlBDWzJdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1ZSgpOwotICAgICAgICBpZiAoTElLRUxZKGlz
SlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkpIHsKKyAgICAgICAgaWYgKExJS0VMWShp
c0pTU3RyaW5nKGJhc2VWYWx1ZSkpKSB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNOdW1i
ZXIoYXNTdHJpbmcoYmFzZVZhbHVlKS0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgdlBDICs9IE9Q
Q09ERV9MRU5HVEgob3BfZ2V0X3N0cmluZ19sZW5ndGgpOwpAQCAtMzUxMSwxNSArMzUxMCwxNSBA
QCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0Lmlz
VUludDMyKCkpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMy
KCk7Ci0gICAgICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsK
KyAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgICAg
IEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICAgICAg
aWYgKGpzQXJyYXktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBqc0FycmF5LT5nZXRJbmRleChpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGpzQXJyYXktPkpTQXJyYXk6OmdldChjYWxsRnJhbWUsIGkpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkg
JiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleChjYWxsRnJhbWUsIGkpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNKU0J5dGVB
cnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNh
bkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgZWxzZSBpZiAoaXNKU0J5dGVBcnJheShiYXNl
VmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGNh
bGxGcmFtZSwgaSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChjYWxsRnJhbWUsIGkpOwpAQCAtMzU1MywxMyArMzU1MiwxMyBAQCBza2lw
X2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMy
KCkpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Ci0g
ICAgICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAgICAg
ICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgICAgIEpTQXJy
YXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGpz
QXJyYXktPmNhblNldEluZGV4KGkpKQogICAgICAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJ
bmRleCgqZ2xvYmFsRGF0YSwgaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAganNBcnJheS0+SlNBcnJheTo6
cHV0QnlJbmRleChqc0FycmF5LCBjYWxsRnJhbWUsIGksIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNW
YWx1ZSgpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRh
LCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkp
KSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAgICAg
ICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNJbnQzMigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggZjgzYTc1OTQ5ZjY3OTkzMDBlMmY3MWE2MjQwMzRhZDE4ZDQwYTU5
MS4uZTY0ZTY5MGZlNzhiNzk4MDE2NTdhODdkMTJhN2ZhNGQ0NWFmMjFlOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0zMjksNyArMzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHZhbHVl
VGFnLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFJlZ2lzdGVySUQgc2NyYXRjaDIsIFdyaXRlQmFycmll
ck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJp
ZXIoSlNDZWxsKiBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBX
cml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAotICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFs
bG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCB2b2lkKiB2dGFibGUsIFJlZ2lzdGVy
SUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9jYXRl
QmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJ
RCBzdG9yYWdlUHRyKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBlbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0
ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1
bmN0aW9uRXhlY3V0YWJsZSosIFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAppbmRleCBlZmU3MDgwOWY5Mjg3MjgxYmQ3NTIx
ZWU2MDU2ZGVkMzdhMTVlNzg5Li5mNDg1MTU3ZTM4NjRiZTZlYjdhN2QwMTUxNzZhMWQ5MTU0NTc2
NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaApA
QCAtODQsNyArODQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYQogCiBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNyYyksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRh
LT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhzcmMsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5n
TGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBsb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVlT2Zmc2V0KCkp
LCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZHN0KSk7CkBA
IC0zOTksNyArMzk5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVDaGFyKHVuc2lnbmVkIHNyYykKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlz
Q29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNT
dHJpbmcoKSAmJiBhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSktPmxl
bmd0aCgpID09IDE7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1l
IFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVj
dChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQordGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwg
dHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzdG9yYWdlUHRyKQogewogICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MqIHNpemVD
bGFzcyA9ICZtX2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yT2JqZWN0KHNpemVvZihDbGFz
c1R5cGUpKTsKICAgICBsb2FkUHRyKCZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlc3VsdCk7
CkBAIC00MDksMTIgKzQwOSwxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBl
bmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvYwogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQpLCBzdG9yYWdlUHRyKTsKICAgICBzdG9yZVB0cihzdG9yYWdlUHRy
LCAmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsKIAotICAgIC8vIGluaXRpYWxpemUgdGhlIG9i
amVjdCdzIHZ0YWJsZQotICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodnRhYmxlKSwgQWRkcmVz
cyhyZXN1bHQpKTsKLQogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQog
ICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpKTsKIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIGNsYXNzSW5mbyBw
b2ludGVyCisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigmQ2xhc3NUeXBlOjpzX2luZm8pLCBB
ZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSkpOworCiAgICAgLy8gaW5p
dGlhbGl6ZSB0aGUgaW5oZXJpdG9yIElECiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
QWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKIApAQCAt
NDI1LDEyICs0MjUsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUg
U3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2MKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0
cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKLSAgICBl
bWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3Q+KHN0cnVjdHVyZSwgbV9nbG9i
YWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciwgcmVzdWx0LCBzY3JhdGNoKTsKKyAgICBlbWl0QWxs
b2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3Q+KHN0cnVjdHVyZSwgcmVzdWx0LCBzY3Jh
dGNoKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgUmVnaXN0ZXJJRCBzY29wZUNoYWluLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQogewotICAgIGVtaXRBbGxvY2F0ZUJh
c2ljSlNPYmplY3Q8SlNGdW5jdGlvbj4oVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPm5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSksIG1fZ2xvYmFsRGF0YS0+anNGdW5j
dGlvblZQdHIsIHJlc3VsdCwgc3RvcmFnZVB0cik7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09i
amVjdDxKU0Z1bmN0aW9uPihUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpKSwgcmVzdWx0LCBzdG9yYWdlUHRyKTsKIAogICAg
IC8vIHN0b3JlIHRoZSBmdW5jdGlvbidzIHNjb3BlIGNoYWluCiAgICAgc3RvcmVQdHIoc2NvcGVD
aGFpbiwgQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3MDU0YjUzNDE1
NjQ3NDk2ZTA3MWZhYWQ2Y2I5YWNlODQwNTIwM2ZhLi5mNWJlMjc5YTYyOWMzZTFmYzZkNTYyZTQ5
YWFiM2ZhZWEwODQ1OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBK
SVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKEpTR2wKIAogICAgIC8vIENo
ZWNrIGVheCBpcyBhIHN0cmluZwogICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczEgPSBlbWl0
SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0g
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzU3RyaW5nVlB0cikpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczIgPSBi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVja3Mg
b3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgVXN0cmluZy4KICAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCkpLCByZWdU
MCk7CkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihzcmMsIHJlZ1QwKTsKICAgICAKICAgICBKdW1wIGlzSW1tID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAg
IGlzSW1tLmxpbmsodGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTEyMDIsNyArMTIw
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVn
VDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRl
eCAwY2VhNDllODJmMzJkZmEzMDIzY2U2MWMyYmRlYjI2NWY3ZmFiNjA1Li41OWM0MmI4ZDYwNTE2
ZGRiZWQzZGM5OWM2YmNkMWNjYzE3YTIxNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8RXhl
Y3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9s
aW5lcyhKU0dsCiAgICAgLy8gcmVnVDAgaG9sZHMgcGF5bG9hZCwgcmVnVDEgaG9sZHMgdGFnCiAK
ICAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMxID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgc3RyaW5nX2ZhaWx1
cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1t
UHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSk7CisgICAgSnVtcCBzdHJpbmdfZmFpbHVy
ZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsKIAogICAg
IC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBVc3RyaW5nLgog
ICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVu
Z3RoKSksIHJlZ1QyKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19w
cmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChz
cmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZElt
bVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAg
aWYgKGRzdCAhPSBzcmMpCkBAIC05NjMsOCArOTYzLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
PjoKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5v
dCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0Nl
bGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKLSAgICBn
ZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyKSwgVHJ1
c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBnZW5lcmljQ2Fz
ZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAgICBn
ZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykp
KTsKIAogICAgIC8vIFN0cmluZyBjYXNlLgogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsRXFTdHJp
bmdzKHRoaXMsIGN0aV9vcF9lcV9zdHJpbmdzKTsKQEAgLTEwMTEsOCArMTAxMSw4IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0
ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gdGFn
cyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmlu
Z1ZQdHIpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMiksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7
CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpz
X2luZm8pKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpT
U3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDQ4LDgg
KzEwNDgsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeQogCiAgICAgLy8gSnVtcCB0byBhIHNs
b3cgY2FzZSBpZiBib3RoIGFyZSBzdHJpbmdzLgogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBK
dW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwg
VHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgSnVtcCBmaXJzdE5vdFN0cmluZyA9IGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgIG5vdENlbGwubGluayh0aGlz
KTsKICAgICBmaXJzdE5vdFN0cmluZy5saW5rKHRoaXMpOwogCkBAIC0xNTI0LDcgKzE1MjQsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdUMCk7CiAKICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVz
cyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKIAog
ICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMp
LCB0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdUMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY3MTdhMTBiY2JjNzhmMmI1NGEz
MjE4MzY0YTdhZGNkNmNiYzYzMWQuLjQ4OTUxZTg3OTM0YjA0YzAyNDVmMzA4MWJhODM4OTM1OTRl
MjI4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFs
U3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OwogICAgIEp1bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChq
aXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihnbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogCiAgICAgLy8gTG9hZCBzdHJpbmcg
bGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0
YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRodW5r
SGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTEwOCw3ICsxMDgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNB
cnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
CiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBj
aGVjawogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmlu
Z1ZQdHIpKTsKKyAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3Ry
aW5nOjpzX2luZm8pKTsKICAgICBlbWl0TmFrZWRDYWxsKENvZGVMb2NhdGlvbkxhYmVsKG1fZ2xv
YmFsRGF0YS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUoKSkp
OwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCk7CiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICB6ZXJvRXh0ZW5kMzJU
b1B0cihyZWdUMSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgYmFzZSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBK
U0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwpAQCAtNTU5LDYgKzU1OSw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlCiAgICAgLy8gYW4gdW5jb25kaXRpb25hbCBiYXJy
aWVyIGhlcmUuCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdU
MywgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nl
c3MpOwogCisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gb2xkU3RydWN0
dXJlLT5jbGFzc0luZm8oKSk7CiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1
cmUpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAgY29t
cGlsZVB1dERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIGNhY2hlZE9mZnNldCk7CiAKQEAgLTYx
OCw3ICs2MTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3Ro
KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8gPSAmbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwogCiAg
ICAgLy8gQ2hlY2sgZWF4IGlzIGFuIGFycmF5Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERh
dGEtPmpzQXJyYXlWUHRyKSk7CisgICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0g
Z2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZmVhZjhi
ODlkZTk0NGVlNDE2YzdhODNkMjIzNzg0YzBiOWRkNzQyMC4uYjczZDdhYjc1MTYyMjE1YTMzZDcz
NWNlZTk3Zjk3YmEzZDdmYjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgSklUOjpD
b2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgSnVtcExpc3QgZmFpbHVy
ZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDApLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBm
YWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CiAgICAgCiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QxLCBhbmQgc3RhcnQg
dGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBq
aXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZz
ZXQoKSksIHJlZ1QxKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgCiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgIAogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDMpOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDAs
IEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJp
bmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChtX2ds
b2JhbERhdGEtPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKS5jb2RlKCkp
OwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCk7CiAgICAgZW1p
dFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2UsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDAs
IEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgZW1pdFdyaXRlQmFycmll
cihyZWdUMCwgcmVnVDEsIHJlZ1QxLCByZWdUMywgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwg
V3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIAogICAgIC8v
IENoZWNrIGZvciBhcnJheQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5
VlB0cikpOworICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpT
QXJyYXk6OnNfaW5mbykpOwogICAgIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhl
IGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fy
cmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCmluZGV4IDQxMzYxNGU5NDYwZTlkYzVlNzUwYjRlMDQxZTk2NzQwZDBlYzk3ZTQu
LjllYjM4ZTBkNjQ5ODBlZmZjYjY3Nzc4MjIyNTNkNWJlOWI0OTljOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04NzUsMTIgKzg3NSwxMiBAQCBORVZFUl9JTkxJ
TkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q29kZUJsb2NrKiBjbwogICAgIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKTsKIAotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFz
ZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7CisgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFtZSA9PSBj
YWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgSklUOjpjb21waWxl
UGF0Y2hHZXRBcnJheUxlbmd0aChjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwg
Y29kZUJsb2NrLCByZXR1cm5BZGRyZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFt
ZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICBpZiAoaXNKU1N0
cmluZyhiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFtZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpIHsKICAgICAgICAgLy8gVGhlIHRyYWRlb2ZmIG9mIGNvbXBpbGluZyBhbiBw
YXRjaGVkIGlubGluZSBzdHJpbmcgbGVuZ3RoIGFjY2VzcyByb3V0aW5lIGRvZXMgbm90IHNlZW0K
ICAgICAgICAgLy8gdG8gcGF5IG9mZiwgc28gd2UgY3VycmVudGx5IG9ubHkgZG8gdGhpcyBmb3Ig
YXJyYXlzLgogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2NrLCBy
ZXR1cm5BZGRyZXNzLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpU3RyaW5nTGVuZ3RoVHJhbXBv
bGluZSgpKTsKQEAgLTI0NzgsNyArMjQ3OCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsKQogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFj
a0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJh
bWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRh
OwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgp
OwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsK
QEAgLTI0OTIsMTMgKzI0OTEsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIG9wX2dldF9ieV92YWwpCiAKICAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKICAg
ICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAoaXNK
U1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNh
bkdldEluZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKICAgICAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9B
RERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbF9zdHJpbmcpKTsKICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZy
YW1lLCBpKTsKICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQotICAgICAgICBpZiAo
aXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VW
YWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJh
c2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsK
ICAgICAgICAgICAgIC8vIEFsbCBmYXN0IGJ5dGUgYXJyYXkgYWNjZXNzZXMgYXJlIHNhZmUgZnJv
bSBleGNlcHRpb25zIHNvIHJldHVybiBpbW1lZGlhdGVseSB0byBhdm9pZCBleGNlcHRpb24gY2hl
Y2tzLgogICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCksIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRf
YnlfdmFsX2J5dGVfYXJyYXkpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKSk7CkBAIC0yNTE5
LDcgKzI1MTgsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0
X2J5X3ZhbF9zdHJpbmcpCiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwog
ICAgIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0g
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwogICAg
IAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
ICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBA
IC0yNTI4LDExICsyNTI2LDExIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVl
LCBvcF9nZXRfYnlfdmFsX3N0cmluZykKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5p
c1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7
Ci0gICAgICAgIGlmIChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJh
c2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAg
ICAgICByZXN1bHQgPSBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChjYWxsRnJhbWUsIGkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoY2Fs
bEZyYW1lLCBpKTsKLSAgICAgICAgICAgIGlmICghaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNl
VmFsdWUpKQorICAgICAgICAgICAgaWYgKCFpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpCiAgICAgICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCksIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfdmFsKSk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMjU0OSw3ICsyNTQ3LDYgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92YWxfYnl0ZV9hcnJheSkKICAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSBzdGFja0ZyYW1lLmdsb2JhbERhdGE7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgc3Vic2Ny
aXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKQEAgLTI1NTgsMTMgKzI1NTUsMTMg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92YWxfYnl0
ZV9hcnJheSkKIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAg
ICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlzSlNC
eXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUp
LT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFs
dWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CiAgICAg
ICAgICAgICAvLyBBbGwgZmFzdCBieXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZlIGZyb20gZXhj
ZXB0aW9ucyBzbyByZXR1cm4gaW1tZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9uIGNoZWNrcy4K
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCeXRlQXJyYXkoYmFzZVZhbHVl
KS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXN1bHQg
PSBiYXNlVmFsdWUuZ2V0KGNhbGxGcmFtZSwgaSk7Ci0gICAgICAgIGlmICghaXNKU0J5dGVBcnJh
eShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKQorICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXkoYmFz
ZVZhbHVlKSkKICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3Bf
Z2V0X2J5X3ZhbCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHko
Y2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CkBAIC0yNjA0LDEzICsy
NjAxLDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWwpCiAKICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Ci0gICAgICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0
YSwgYmFzZVZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAg
ICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAg
ICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAganNBcnJh
eS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGksIHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGNhbGxGcmFtZSwgaSwg
dmFsdWUpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFz
ZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAgICAgSlNCeXRlQXJy
YXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JF
VFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KSk7
CiAgICAgICAgICAgICAvLyBBbGwgZmFzdCBieXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZlIGZy
b20gZXhjZXB0aW9ucyBzbyByZXR1cm4gaW1tZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9uIGNo
ZWNrcy4KQEAgLTI2NDMsNyArMjY0MCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9w
X3B1dF9ieV92YWxfYnl0ZV9hcnJheSkKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7CiAgICAgCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzdGFja0ZyYW1lLmdsb2JhbERh
dGE7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFs
dWUoKTsKQEAgLTI2NTEsNyArMjY0Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9w
X3B1dF9ieV92YWxfYnl0ZV9hcnJheSkKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5p
c1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7
Ci0gICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgaWYgKGlz
SlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nl
c3NJbmRleChpKSkgewogICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQWxsIGZh
c3QgYnl0ZSBhcnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlvbnMgc28gcmV0dXJu
IGltbWVkaWF0ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCkBAIC0yNjY2LDcgKzI2NjIs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsX2J5dGVfYXJyYXkp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXko
Z2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkKKyAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGJhc2VW
YWx1ZSkpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZyYW1l
LT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX3B1
dF9ieV92YWwpKTsKICAgICAgICAgYmFzZVZhbHVlLnB1dChjYWxsRnJhbWUsIGksIHZhbHVlKTsK
ICAgICB9IGVsc2UgewpAQCAtMzQzMyw3ICszNDI5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
RW5jb2RlZEpTVmFsdWUsIG9wX2lzX3N0cmluZykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJB
TUUoc3RhY2tGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihp
c0pTU3RyaW5nKHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFs
dWUoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0pTU3RyaW5n
KHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpKSk7CiB9CiAKIERFRklORV9TVFVCX0ZVTkNU
SU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9pc19vYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCmluZGV4IGVjYzQ5MWU4N2IxMTY3N2ZjOWU5
MTgyMTUxNjM5NGY4NzVmY2E2NTAuLmFiNzhlYWE5OTcyNTRkOTg2NjgwNTgwNTVmZjY3MmMyMWU0
NDk4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxv
YWRKU1N0cmluZ0FyZ3VtZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0gICAgICAg
ICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCAw
KSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAg
ICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhkc3QsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZv
KSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFyZ3VtZW50
KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4
IDk4MzZhMTIwN2ZjY2FiZmNkZGJlYzNjODUwZDU2NTQwNjA1MGYwMjAuLmQxMTk1ZmJmNDUxNzg5
ZWJmOGE5NDRlYWY5YzFiYjY5ZmZiZTMzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC00MSw2ICs0MSw4IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JJc0FycmF5KEV4
ZWNTdGF0ZSopOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoQXJyYXlDb25zdHJ1Y3Rvcik7CisKIGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAs
IEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFy
cmF5Q29uc3RydWN0b3IpIH07CiAKIC8qIFNvdXJjZSBmb3IgQXJyYXlDb25zdHJ1Y3Rvci5sdXQu
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CmluZGV4IGI3ODQ0MTNhZjhlYjRlY2RiYmJiYzMzYTZjOTU2OTAwMzNhMDliYzAuLmQ4ZDE0ZjM0
ZmYyNjBmN2FkNzcwNWY5NDVlMmIzMDQ5M2RjYTNjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpOwogCi0gICAgYm9vbCBpc1JlYWxBcnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzVmFsdWUpOworICAgIGJvb2wgaXNSZWFsQXJyYXkgPSBpc0pTQXJyYXkodGhpc1Zh
bHVlKTsKICAgICBpZiAoIWlzUmVhbEFycmF5ICYmICF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTQXJy
YXk6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAg
IEpTQXJyYXkqIHRoaXNPYmogPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC0zMDAsNyArMzAwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBzZXBhcmF0b3IgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7
CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKIAogICAgICAgICBp
ZiAobGVuZ3RoKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAKLSAgICBpZiAoaXNKU0FycmF5KCZl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXNWYWx1ZSkpCisgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFs
dWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+
cG9wKCkpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZXhl
Yyk7CkBAIC00MTIsNyArNDEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogCi0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSB7Cisg
ICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAx
KSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzVmFsdWUpOwogICAgICAg
ICBhcnJheS0+cHVzaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgpKSk7CkBAIC00ODEsNyArNDgx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICB9IGVs
c2UgewogICAgICAgICByZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgMCk7Ci0gICAgICAgIGlm
IChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgICAgIGlmIChp
c0pTQXJyYXkodGhpc09iaikpCiAgICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+c2hp
ZnRDb3VudChleGVjLCAxKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGsgPSAxOyBrIDwgbGVuZ3RoOyBrKyspIHsKQEAgLTYyNyw3ICs2MjcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICB1bnNpZ25lZCBhZGRpdGlvbmFsQXJncyA9IHN0ZDo6bWF4PGludD4oZXhlYy0+YXJn
dW1lbnRDb3VudCgpIC0gMiwgMCk7CiAgICAgaWYgKGFkZGl0aW9uYWxBcmdzICE9IGRlbGV0ZUNv
dW50KSB7CiAgICAgICAgIGlmIChhZGRpdGlvbmFsQXJncyA8IGRlbGV0ZUNvdW50KSB7Ci0gICAg
ICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzT2JqKSkpCisgICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSh0aGlzT2Jq
KSkpCiAgICAgICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnNoaWZ0Q291bnQoZXhl
YywgZGVsZXRlQ291bnQgLSBhZGRpdGlvbmFsQXJncyk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSBiZWdpbjsgayA8IGxlbmd0aCAtIGRlbGV0
ZUNvdW50OyArK2spIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAg
ICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmosIGV4ZWMsIGsgLSAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXNPYmopKSkKKyAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KHRoaXNP
YmopKSkKICAgICAgICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+dW5zaGlmdENvdW50
KGV4ZWMsIGFkZGl0aW9uYWxBcmdzIC0gZGVsZXRlQ291bnQpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoIC0gZGVsZXRlQ291bnQ7
IGsgPiBiZWdpbjsgLS1rKSB7CkBAIC02NzYsNyArNjc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
dW5zaWduZWQgbnJBcmdzID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmICgobnJBcmdz
KSAmJiAobGVuZ3RoKSkgewotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXNPYmopKQorICAgICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAgICAg
ICAgKChKU0FycmF5ICopdGhpc09iaiktPnVuc2hpZnRDb3VudChleGVjLCBuckFyZ3MpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsgayA+IDA7
IC0taykgewpAQCAtNzE1LDcgKzcxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNGaWx0ZXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgdW5zaWduZWQgZmls
dGVySW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkgewor
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewog
ICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIEpT
QXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNo
ZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtNzczLDcgKzc3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNB
cnJheSogcmVzdWx0QXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIGxlbmd0aCk7CiAg
ICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNK
U0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7CisgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIEpTRnVuY3Rp
b24qIGYgPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBh
c0FycmF5KHRoaXNPYmopOwogICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwg
Myk7CkBAIC04MzYsNyArODM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
Qm9vbGVhbih0cnVlKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkg
eworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBj
YWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtODkyLDcgKzg5Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogCiAgICAgdW5zaWduZWQg
ayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KCZleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
SlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGYgPSBhc0Z1
bmN0aW9uKGZ1bmN0aW9uKTsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNP
YmopOwogICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7CkBAIC05NDQs
NyArOTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Nv
bWUoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGZhbHNl
KTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpT
ICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkgeworICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBK
U0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4
ZWMsIGYsIDMpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSAwOwotICAg
IGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgaWYgKGlz
SlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwogCiAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAK
ICAgICBKU0FycmF5KiBhcnJheSA9IDA7Ci0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzT2JqKSkKKyAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAgICBh
cnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA+PSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGMyOGRlMTQzMTgxMjY1ODExYzJiZjE1OTcwMmFkMjcz
NTBjMjNhYi4uYTU0ZDI4MWE3ZTBiYTQ3ZWVlYTBiNzc3NTk2Yjc4YjI3MWQzOGJlZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChCb29sZWFuQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoQm9vbGVhbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5Db25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcAppbmRleCA1YTQ0OWMwNjM5Mzc1
NzUyNTM4MTIxYTkxNDY4YjE3OTU1NzgyMjczLi4zN2M2ZWFiMGRkZWNlM2Y1NGMzZWNhYzkyYWQ4
OTJmM2ZkNTI4MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuT2JqZWN0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbk9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxf
REVTVFJVQ1RPUihCb29sZWFuT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5PYmpl
Y3Q6OnNfaW5mbyA9IHsgIkJvb2xlYW4iLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoQm9vbGVhbk9iamVjdCkgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCBjN2VhOTY0
ZWM3ZTNlNWYzOTRhZTFjYmFiZTBjN2YyZTJhZTBkNDI4Li5iOTYwNWQwY2ZjN2ZmMDhhMjAwZWI5
ZDUzOWNiMTg2YzFhYmYwOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcApAQCAtNDgsNiArNDgsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gQm9vbGVhblByb3RvdHlwZTo6c19pbmZvID0geyAiQm9vbGVhbiIsICZCb29sZWFuT2JqZWN0
OjpzX2luZm8sCiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xlYW5Qcm90b3R5
cGUpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoQm9vbGVhblByb3RvdHlwZSk7CiAK
IEJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmlu
ZGV4IDA5ZmVkYjNmNGU4MzNhNGJmMjMyNmU4ODFlOTBhNmRmYzNkMGQ3NjIuLjlmZmY2NGU2NzVh
NTA1MzgwMTNkZjE1ODFhMjE4NDc4YWRmOTg2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NsYXNzSW5mby5oCkBAIC0zMyw2ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHN0cnVjdCBIYXNoVGFibGU7CiAKICAgICBzdHJ1Y3QgTWV0aG9kVGFibGUgeworICAgICAgICB0
eXBlZGVmIHZvaWQgKCpEZXN0cm95RnVuY3Rpb25QdHIpKEpTQ2VsbCopOworICAgICAgICBEZXN0
cm95RnVuY3Rpb25QdHIgZGVzdHJveTsKKwogICAgICAgICB0eXBlZGVmIHZvaWQgKCpWaXNpdENo
aWxkcmVuRnVuY3Rpb25QdHIpKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIFZpc2l0
Q2hpbGRyZW5GdW5jdGlvblB0ciB2aXNpdENoaWxkcmVuOwogCkBAIC0xMTQsNiArMTE3LDcgQEAg
c3RydWN0IE1lbWJlckNoZWNrIyNtZW1iZXIgeyBcCiAjZGVmaW5lIEhBU19NRU1CRVJfTkFNRUQo
a2xhc3MsIG5hbWUpIChNZW1iZXJDaGVjayMjbmFtZTxrbGFzcz46OmhhcykKIAogI2RlZmluZSBD
UkVBVEVfTUVUSE9EX1RBQkxFKENsYXNzTmFtZSkgeyBcCisgICAgICAgICZDbGFzc05hbWU6OmRl
c3Ryb3ksIFwKICAgICAgICAgJkNsYXNzTmFtZTo6dmlzaXRDaGlsZHJlbiwgXAogICAgICAgICAm
Q2xhc3NOYW1lOjpnZXRDYWxsRGF0YSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRDb25zdHJ1
Y3REYXRhLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAppbmRleCA5MzE4OTllYjBhM2NlZDc1NjdiOGU4Y2RmN2VkMGM0ZDRiOWVmNTMy
Li5hZDQwMmM3NzUxZDlhN2RjNDNiZDc2MGRmOWFjNTgwMWZkZTc3OWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDYg
KzcyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIERhdGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmYKICovCiAKIEFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoRGF0ZUNvbnN0cnVjdG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9S
KERhdGVDb25zdHJ1Y3Rvcik7CiAKIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAppbmRleCA1NDU3NTdiOTNmNDdi
NjU0ZmFhYjczYThkZGQ0ZGE2M2M4OWUzYzhhLi5hNTAyNzcwYzg3NTA4YjcyZTRmMjQ5OGRkOWM3
NjI3NWNjYjc4ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5jcHAKQEAgLTUzLDYgKzUzLDExIEBAIHZvaWQgRGF0ZUluc3RhbmNlOjpmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGRvdWJsZSB0aW1lKQogICAgIHNldElu
dGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwganNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0KIAor
dm9pZCBEYXRlSW5zdGFuY2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxE
YXRlSW5zdGFuY2UqPihjZWxsKS0+RGF0ZUluc3RhbmNlOjp+RGF0ZUluc3RhbmNlKCk7Cit9CisK
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6OmNhbGN1bGF0ZUdyZWdvcmlh
bkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBkb3VibGUgbWlsbGkgPSBp
bnRlcm5hbE51bWJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5z
dGFuY2UuaAppbmRleCAzMjQxNzBiMWNhZjQwODA3N2QwZmU0NTFkOGJmNTU1ZTA2NjQ5YzAwLi44
ZDkwY2YwYzQxN2FmODgzNTdjZjA4ZGYyYzg5ZWIyMzQxYzQxNDRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMzQsNyArMzQsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSop
OwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGRvdWJsZSk7Ci0gICAgICAgIAorCisg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgCiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIEpTV3JhcHBlck9iamVjdCBCYXNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKaW5kZXggNGExZTE0ODIwNTVkOWFjZDI3N2U1NDU2MWIzN2JmMjE2
OTE2ZDY5Yi4uYTUzNzNkNTI1Y2ExNjY0NWM4YTJlZjNhZDg1ZDg5YjQ1MmMwMjQ0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTcwLDYgKzE3MCwxMSBAQCBB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik7CiAK
IGNvbnN0IENsYXNzSW5mbyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pIH07CiAKK3ZvaWQgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8U3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uKj4oY2VsbCktPlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6flN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbigpOworfQorCiBKU1ZhbHVlIGNyZWF0ZVR5cGVFcnJv
ckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggYWM3MzU0ZDMxNzIw
NGNlN2E3N2M5ZThlMDlmMDNlNzNlYTFhMmYyMy4uMTdjMzQ5OGJjZmY0OTM1OWZmODY0ZjFlMThh
YjNhNDA0MTI3M2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC04
Miw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA1MjMwOWQxZmQ2YWE5
NzQzOTljNjU0N2I1NjM1ZmU1OGU2OTQ0ZmZjLi5jOGY5M2JhMzIzY2M1ZGM3YTdlMzhmNzUyN2Iw
ZjIzZGNjODhmMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFT
X1RSSVZJQUxfREVTVFJVQ1RPUihFcnJvckNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZv
IEVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckNvbnN0cnVjdG9yKSB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IDgzYWJl
NWMyNjAwNjUwNjA1N2MyMDMzZjZjYmEyODgyMmVmZGRlYzcuLjkxYTZmYzQwZWFiODExN2Q2YzUx
YzkwZmIyZDA4M2FlYjM4Y2NiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihFcnJvckluc3RhbmNlKTsKKwogY29u
c3QgQ2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OnNfaW5mbyA9IHsgIkVycm9yIiwgJkpTTm9uRmlu
YWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckluc3RhbmNl
KSB9OwogCiBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGQ1YWNlODA3YTRkM2I5OGMyYTcz
MjIyZDY2MTU3MWFhOTUyYzcwMjMuLjA1ZTk3MWY3ZmYwNWIzZTY0NGVhYmI5NmI1Y2MwNjk1OWU2
ZDhiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKTsKKwog
Y29uc3QgQ2xhc3NJbmZvIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9IHsgIklu
dGVycnVwdGVkRXhlY3V0aW9uRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IpIH07CiAKIEpTVmFsdWUgSW50ZXJy
dXB0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCkBAIC02Niw2ICs2OCw4IEBA
IGJvb2wgaXNJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU1ZhbHVlIHZhbHVlKQogfQog
CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
cik7CisKIGNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9
IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKSB9OwogCiBKU1ZhbHVlIFRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDY0ZTkyZThhZjFkZmUxM2Zj
MTE2YzY1ODA5ZjBhNTE2NzgzY2IzYjIuLmFkODY0NjNkYmY0NzcyYjFhNmRmM2NkM2JhNDUxZDFk
OGM1MTE0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0zOCw2ICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZv
IEV4ZWN1dGFibGVCYXNlOjpzX2luZm8gPSB7ICJFeGVjdXRhYmxlIiwgMCwgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShFeGVjdXRhYmxlQmFzZSkgfTsKIAordm9pZCBFeGVjdXRhYmxlQmFzZTo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4oY2Vs
bCktPkV4ZWN1dGFibGVCYXNlOjp+RXhlY3V0YWJsZUJhc2UoKTsKK30KKwogaW5saW5lIHZvaWQg
RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiB7CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTYxLDgg
KzY2LDkgQEAgSW50cmluc2ljIEV4ZWN1dGFibGVCYXNlOjppbnRyaW5zaWMoKSBjb25zdAogCiBj
b25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTmF0aXZlRXhlY3V0
YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KE5hdGl2ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGU6On5OYXRpdmVFeGVjdXRh
YmxlKCkKK3ZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7Cisg
ICAganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihjZWxsKS0+TmF0aXZlRXhlY3V0YWJsZTo6fk5h
dGl2ZUV4ZWN1dGFibGUoKTsKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtOTMsNiArOTks
MTEgQEAgdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5hbGl6ZShKU0NlbGwqIGNlbGwpCiAKIGNv
bnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3JpcHRFeGVjdXRh
YmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
U2NyaXB0RXhlY3V0YWJsZSkgfTsKIAordm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8U2NyaXB0RXhlY3V0YWJsZSo+KGNlbGwpLT5TY3Jp
cHRFeGVjdXRhYmxlOjp+U2NyaXB0RXhlY3V0YWJsZSgpOworfQorCiBjb25zdCBDbGFzc0luZm8g
RXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1
dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJsZSkg
fTsKIAogRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCkKQEAgLTEwMCw4ICsx
MTEsOSBAQCBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaQogewogfQogCi1FdmFsRXhlY3V0YWJsZTo6
fkV2YWxFeGVjdXRhYmxlKCkKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogeworICAgIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpLT5FdmFsRXhlY3V0YWJs
ZTo6fkV2YWxFeGVjdXRhYmxlKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBQcm9ncmFtRXhlY3V0
YWJsZTo6c19pbmZvID0geyAiUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb2dyYW1FeGVjdXRhYmxlKSB9OwpA
QCAtMTExLDggKzEyMyw5IEBAIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKIHsKIH0KIAotUHJvZ3Jh
bUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpCit2b2lkIFByb2dyYW1FeGVjdXRhYmxl
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUq
PihjZWxsKS0+UHJvZ3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpOwogfQogCiBj
b25zdCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4
ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKQEAgLTEzNyw4ICsxNTAsOSBAQCBGdW5jdGlv
bkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsCiB7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6fkZ1bmN0aW9uRXhl
Y3V0YWJsZSgpCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CiB7CisgICAganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpLT5GdW5jdGlvbkV4ZWN1
dGFibGU6On5GdW5jdGlvbkV4ZWN1dGFibGUoKTsKIH0KIAogSlNPYmplY3QqIEV2YWxFeGVjdXRh
YmxlOjpjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW5Ob2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CmluZGV4IDYzOTU4NDNhYzJkM2VhYzZjMWU0MzRiOGFjMmEwMmNiYjdjMDRmMjcuLjdmODVjOTAy
NzA3ZTZlYmE2N2U2NmY3NzUwYTFkMGVkMjUxY2UxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTc3LDYgKzc3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlv
bigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgobV9udW1QYXJhbWV0ZXJz
Rm9yQ2FsbCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUKSA9PSAobV9udW1QYXJhbWV0ZXJzRm9y
Q29uc3RydWN0ID09IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpKTsKQEAgLTIwNiw3ICsyMDgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgdmlydHVhbCB+
TmF0aXZlRXhlY3V0YWJsZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlv
bjsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fY29u
c3RydWN0b3I7IH0KQEAgLTI3NCw2ICsyNzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwog
ICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsgfQog
ICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3Zp
ZGVyKCktPmFzSUQoKTsgfQogICAgICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQpAQCAtMzE4LDcgKzMyMiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRF
eGVjdXRhYmxlIEJhc2U7CiAKLSAgICAgICAgdmlydHVhbCB+RXZhbEV4ZWN1dGFibGUoKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBKU09iamVjdCog
Y29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkK
ICAgICAgICAgewpAQCAtMzkxLDcgKzM5NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5Qcm9n
cmFtRXhlY3V0YWJsZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlKQogICAgICAgICB7CkBAIC00NjgsNyArNDcyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpcnR1YWwgfkZ1bmN0aW9uRXhlY3V0YWJsZSgpOworICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIEpTRnVuY3Rpb24qIG1ha2UoRXhlY1N0YXRl
KiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApp
bmRleCBiZTRjNjNjNDU3NmNlNzQwMWQxZmM5MDE2OWVlNDZmMzA3NWU2ZTA2Li5lMDhlNThjODM1
YThkMmZkMTVkYTNkYmYwODg2YWM5YmQ5MTc0NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihGdW5jdGlvbkNv
bnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggMTk4OTgyN2IyZmRhZjc1ZjFl
ODk3MmE2NjQ0ZmY2YjVmNmFmMmEyOS4uYjEwMTdlNDkzNzJlMzU3MTE2ZDBlOWUyNTgwZWNhY2Q5
NzZhNDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rpb25Qcm90b3R5cGUpOworQVNTRVJUX0hBU19U
UklWSUFMX0RFU1RSVUNUT1IoRnVuY3Rpb25Qcm90b3R5cGUpOwogCiBjb25zdCBDbGFzc0luZm8g
RnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvblByb3RvdHlwZSkgfTsKIApAQCAtMTM2
LDcgKzEzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1
bmNBcHBseShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoYXNBcmd1bWVudHMoYXJy
YXkpLT5sZW5ndGgoZXhlYykgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cykKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
KTsKICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFycmF5KS0+ZmlsbEFyZ0xpc3QoZXhlYywgYXBw
bHlBcmdzKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEo
KSwgYXJyYXkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNKU0FycmF5KGFycmF5KSkgewogICAg
ICAgICAgICAgaWYgKGFzQXJyYXkoYXJyYXkpLT5sZW5ndGgoKSA+IEFyZ3VtZW50czo6TWF4QXJn
dW1lbnRzKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICAgICAgYXNBcnJheShhcnJheSktPmZpbGxB
cmdMaXN0KGV4ZWMsIGFwcGx5QXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAxN2NiYjQ0OWYyYzZkNzE3MTNhNWViMTU2MGRmNzJl
NzJjMTkyOTcxLi45MjAzOTlkZGEzZjM4YmY4NzcxZWU1MDVmNjZkMTk0YmRkZTljNWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTI4
LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNU
UlVDVE9SKEdldHRlclNldHRlcik7CisKIGNvbnN0IENsYXNzSW5mbyBHZXR0ZXJTZXR0ZXI6OnNf
aW5mbyA9IHsgIkdldHRlclNldHRlciIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoR2V0
dGVyU2V0dGVyKSB9OwogCiB2b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAppbmRleCAzYTM3MWY5NTBkM2Nl
M2EwNzUzZDgwZGY4YjJiOTQzNTZjM2Y1ZGQ4Li5lNWUxYzJhZTVmMmFhM2NjYTY1ZTNlOTY4ZDQ1
NDYzODU4NWFkYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAtNTcsNyArNTcsNiBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklM
SU5HKQogICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CiAjZW5kaWYKLSAg
ICBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUo
QVNTRU1CTEVSKQogICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmluaXRpYWxpemVBbGxvY2F0b3Io
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAppbmRleCAxNzE0MTYzNzY3MTM5YjYwM2RjNDY2ZGUzNWRiOTY4OWIzN2I5
YjNhLi41MGVhNTA0YzFhOTM5NmQyOWVlNTc3YTM3ZmU1ZDBhMzNkZDcxYmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAt
MjksMTggKzI5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBFbnN1cmUgdGhlIGNvbXBp
bGVyIGdlbmVyYXRlcyBhIHZ0YWJsZSBmb3IgSW50ZXJuYWxGdW5jdGlvbiEKLXZvaWQgSW50ZXJu
YWxGdW5jdGlvbjo6dnRhYmxlQW5jaG9yKCkge30KLQogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChJbnRlcm5hbEZ1bmN0aW9uKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEludGVy
bmFsRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGVybmFsRnVuY3Rpb24pIH07CiAKLUludGVybmFsRnVuY3Rpb246Oklu
dGVybmFsRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KFZQdHJTdGVhbGluZ0hhY2spCi17Ci19Ci0KIEludGVybmFsRnVuY3Rpb246OkludGVybmFs
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpCiB7CkBAIC02Myw3ICs1Niw3IEBAIGNvbnN0IFVTdHJpbmcgSW50ZXJuYWxGdW5j
dGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgZGlzcGxh
eU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCku
cHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOwogICAgIAotICAgIGlmIChkaXNwbGF5TmFtZSAm
JiBpc0pTU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIGRpc3BsYXlOYW1lKSkKKyAgICBpZiAo
ZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZyhkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBh
c1N0cmluZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CiAgICAgCiAgICAgcmV0dXJuIFVT
dHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAppbmRleCA4ZTIxNzhlM2Y2NTk3OGE5YzFhZWFlOWE0NTVmNjI5YmYxNGNhZjAzLi5h
MDM4YjdhZTE5Nzg4YmZmNDQ1ZjAyODIyNzI0ZWM4NmNjODEyMzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC00OSwxNyArNDks
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU09i
amVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgLy8gT25seSB1c2VkIHRvIGFsbG93IHVz
IHRvIGRldGVybWluZSB0aGUgSlNGdW5jdGlvbiB2cHRyCi0gICAgICAgIEludGVybmFsRnVuY3Rp
b24oVlB0clN0ZWFsaW5nSGFja1R5cGUpOwotCiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCiAgICAgICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwogICAgIH07CiAKICAgICBJ
bnRlcm5hbEZ1bmN0aW9uKiBhc0ludGVybmFsRnVuY3Rpb24oSlNWYWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKaW5kZXgg
YjFiMzNmNWQ3YmFhNGVjOWQ2ZTlmNGU5MzNkNzQyMTA5Yzg0NDRkMy4uODUxNzA4NWRmZWUyNjhm
M2Y0Zjc5NmI4MTY0MjBkNzI3YTI0YzlmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNBUElWYWx1
ZVdyYXBwZXIpOworCiBjb25zdCBDbGFzc0luZm8gSlNBUElWYWx1ZVdyYXBwZXI6OnNfaW5mbyA9
IHsgIkFQSSBXcmFwcGVyIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FQSVZhbHVl
V3JhcHBlcikgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGY3NTZjN2JlMjRhOWU0ZDU4OTc4YzBhNWYyNjUzMmU0
ZGViY2EyYTEuLjBjOTIyMGU2MjZkMjVlNjYxYjFhNGYyMGI5ZDhmMmRjNTkxYzlmYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xMjYsMTEgKzEyNiw2
IEBAIGlubGluZSB2b2lkIEpTQXJyYXk6OmNoZWNrQ29uc2lzdGVuY3koQ29uc2lzdGVuY3lDaGVj
a1R5cGUpCiAKICNlbmRpZgogCi1KU0FycmF5OjpKU0FycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBl
KQotICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQotewotfQotCiBKU0Fy
cmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKQEAg
LTI3NywxMyArMjcyLDE4IEBAIHZvaWQgSlNBcnJheTo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHNpCiAKIEpTQXJyYXk6On5K
U0FycmF5KCkKIHsKLSAgICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNBcnJheVZQ
dHIpOworICAgIEFTU0VSVChqc0Nhc3Q8SlNBcnJheSo+KHRoaXMpKTsKICAgICBjaGVja0NvbnNp
c3RlbmN5KERlc3RydWN0b3JDb25zaXN0ZW5jeUNoZWNrKTsKIAogICAgIGRlbGV0ZSBtX3N0b3Jh
Z2UtPm1fc3BhcnNlVmFsdWVNYXA7CiAgICAgZmFzdEZyZWUobV9zdG9yYWdlLT5tX2FsbG9jQmFz
ZSk7CiB9CiAKK3ZvaWQgSlNBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganND
YXN0PEpTQXJyYXkqPihjZWxsKS0+SlNBcnJheTo6fkpTQXJyYXkoKTsKK30KKwogYm9vbCBKU0Fy
cmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKaW5kZXggZTk1OGQ1NTJmMmZlY2Y0YmQxN2Q5ZmM1ZWE4NTRlNmU2ZmJj
OGNlMi4uMWVhZDgyYzg2OWQxMzcxYzEyN2Y3MWFjZmNjZjc3MTBmZjQ3Y2JhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNzEsOCArNzEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOwogCi0gICAgICAgIEpTQXJyYXkoVlB0clN0ZWFsaW5nSGFja1R5cGUpOwotICAgICAgICB2
aXJ0dWFsIH5KU0FycmF5KCk7CisgICAgICAgIH5KU0FycmF5KCk7CisgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7
CkBAIC0yMTYsOCArMjE2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBhc0Fy
cmF5KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXko
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0NlbGwqIGNlbGwpIHsgcmV0dXJuIGNlbGwtPnZw
dHIoKSA9PSBnbG9iYWxEYXRhLT5qc0FycmF5VlB0cjsgfQotICAgIGlubGluZSBib29sIGlzSlNB
cnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0Nl
bGwoKSAmJiBpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgdi5hc0NlbGwoKSk7IH0KKyAgICBpbmxpbmUg
Ym9vbCBpc0pTQXJyYXkoSlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT5jbGFzc0luZm8oKSA9
PSAmSlNBcnJheTo6c19pbmZvOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTVmFsdWUg
dikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc0pTQXJyYXkodi5hc0NlbGwoKSk7IH0KIAogICAg
IC8vIFJ1bGUgZnJvbSBFQ01BIDE1LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4KICAg
ICAvLyBNdXN0IGV4YWN0bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4gdW5zaWduZWQgaW50ZWdl
ciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMyIC0gMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IGNmMGJhODM1ODU4YjNiM2E1ZTE0
N2RlZDU2ODM2MzczM2I3MWY3Y2YuLjBlNWE5OWFlNWJmODY4ZTAzMDYxOTMzMTRjZGU4ZWI2ZjRi
YzE5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNCb3VuZEZ1bmN0aW9uKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEpTQm91bmRGdW5jdGlvbik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0JvdW5kRnVu
Y3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0JvdW5kRnVuY3Rpb24pIH07CiAKQEAgLTM4LDcgKzM5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgQVNTRVJUKGlzSlNBcnJh
eSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkpOyAvLyBD
dXJyZW50bHkgdGhpcyBpcyB0cnVlIQorICAgIEFTU0VSVChpc0pTQXJyYXkoYm91bmRGdW5jdGlv
bi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKICAgICBKU0FycmF5
KiBib3VuZEFyZ3MgPSBhc0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC01OCw3ICs1OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgQVNTRVJUKGlzSlNBcnJheSgm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkpOyAvLyBDdXJy
ZW50bHkgdGhpcyBpcyB0cnVlIQorICAgIEFTU0VSVChpc0pTQXJyYXkoYm91bmRGdW5jdGlvbi0+
Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKICAgICBKU0FycmF5KiBi
b3VuZEFyZ3MgPSBhc0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKTsKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0J5dGVBcnJheS5jcHAKaW5kZXggOTk3M2M1NjYxYjJlOTcyMTcyMTVjNGIzNjZjNzdjNDBl
NzE4NzBhNC4uNzQ3OGEwOGZiYTQ5Mzk0N2U4YWM2Zjg2OGQ1NGIxNWU2NWQ1ZGIyMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAtNDEsMTMg
KzQxLDE1IEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhCiB7CiB9CiAgICAgICAgIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKIEpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkoKQogewotICAgIEFTU0VS
VCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHIpOworICAgIEFTU0VSVChq
c0Nhc3Q8SlNCeXRlQXJyYXkqPih0aGlzKSk7CiB9Ci0jZW5kaWYKIAordm9pZCBKU0J5dGVBcnJh
eTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTQnl0ZUFycmF5Kj4oY2Vs
bCktPkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkoKTsKK30KIAogU3RydWN0dXJlKiBKU0J5dGVB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiBjbGFzc0luZm8pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRl
QXJyYXkuaAppbmRleCAwMDQxZDE0YzQ0MDAxNThiM2VhZTFiM2FlZjJkNGFlZDlmZTFmZjNlLi41
MTIyYmFkNWVmYTQ3M2I2ODg0MGYxMzYwNGRhNzllNDljMzUxZDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTEwMiw5ICsxMDIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5nZXQoKTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAg
ICB2aXJ0dWFsIH5KU0J5dGVBcnJheSgpOwotI2VuZGlmCisgICAgICAgIH5KU0J5dGVBcnJheSgp
OworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRp
YyBzaXplX3Qgb2Zmc2V0T2ZTdG9yYWdlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQnl0
ZUFycmF5LCBtX3N0b3JhZ2UpOyB9CiAKQEAgLTExOCwxMSArMTE3LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQnl0ZUFycmF5KFZQdHJT
dGVhbGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KFZQdHJTdGVh
bGluZ0hhY2spCi0gICAgICAgIHsKLSAgICAgICAgfQotCiAgICAgICAgIFJlZlB0cjxXVEY6OkJ5
dGVBcnJheT4gbV9zdG9yYWdlOwogICAgIH07CiAgICAgCkBAIC0xMzIsNyArMTI2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0J5dGVBcnJheSo+KHZh
bHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTQnl0ZUFycmF5KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYm
IHYuYXNDZWxsKCktPnZwdHIoKSA9PSBnbG9iYWxEYXRhLT5qc0J5dGVBcnJheVZQdHI7IH0KKyAg
ICBpbmxpbmUgYm9vbCBpc0pTQnl0ZUFycmF5KEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwo
KSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSAmSlNCeXRlQXJyYXk6OnNfaW5mbzsgfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAKaW5kZXggNDkxZWYwODEzZmU4NThkNGQzODY1NjQ3ZDY4ZmExYWNiN2JjMGFlMS4uMDY1
ZmQxM2VhYTEyZjViZmVjYTU4YjJlOGFkMjQwZjkxNWU3ZGIwNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNDZWxsKTsKKwordm9pZCBK
U0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGNlbGwtPkpTQ2VsbDo6fkpTQ2Vs
bCgpOworfQorCiBib29sIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmlu
ZyZzdHJpbmdWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzU3RyaW5nKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDc2Y2VmMDQ1YTY5MTk5MjVjMGQ3NzhiM2Y4
MzdlNmMyZDY4Zjc0N2MuLmM3NTVhNjAzZDI2NzY4MTAyOWM1ZDAxZjVhMzVkMWJmN2FkNzY0NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC02NSwxNSArNjUsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gQ3JlYXRpbmdFYXJseUNlbGxUYWcgeyBD
cmVhdGluZ0Vhcmx5Q2VsbCB9OwogICAgICAgICBKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcp
OwogCi0gICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNr
IH07Ci0gICAgICAgIGV4cGxpY2l0IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrVHlwZSkgeyB9Ci0K
ICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHBs
YWNlbWVudE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbjsg
fSAvLyBVc2VkIGZvciBpbml0aWFsaXphdGlvbiBhZnRlciBHQyBhbGxvY2F0aW9uLgogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0g
ICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOyAvLyBJbnZva2VkIGJ5IEdDIGZpbmFsaXphdGlvbi4K
KyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHB1YmxpYzoKICAg
ICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCkBAIC0xMDgsNiArMTA1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0
IG9wZXJhdGlvbiBpbmNsdWRlZC4KICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdDsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiB2YWxpZGF0ZWRDbGFzc0luZm8oKSBj
b25zdDsKICAgICAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSk7CkBAIC0xMTcsOCArMTE1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7CiAKLSAgICAgICAgdm9pZCogdnB0cigpIGNvbnN0IHsgQVNTRVJUKCFpc1phcHBlZCgpKTsg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqIGNvbnN0Kj4odGhpcyk7IH0KLSAgICAgICAg
dm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlz
KSA9IHZwdHI7IEFTU0VSVCghaXNaYXBwZWQoKSk7IH0KICAgICAgICAgdm9pZCB6YXAoKSB7ICpy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KICAgICAgICAgYm9vbCBp
c1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNv
bnN0Kj4odGhpcyk7IH0KIApAQCAtMTMzLDYgKzEyOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3Ry
dWN0dXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZv
T2Zmc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U0NlbGwsIG1fY2xhc3NJbmZvKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCog
c3RydWN0dXJlQWRkcmVzcygpCiAgICAgICAgIHsKQEAgLTE2NiwxMyArMTY3LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0lu
Zm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07
Ci0gICAgCi0gICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0
YSwgdGhpcywgc3RydWN0dXJlKQotICAgIHsKLSAgICB9CiAKICAgICBpbmxpbmUgSlNDZWxsOjpK
U0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgewpAQCAtMTg5LDI1ICsxODYsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CiAgICAgfQogCi0g
ICAgaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKLSAgICB7
Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLmlz
SW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemlu
Z09iamVjdChmYWxzZSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0jZW5kaWYKLSAgICAgICAg
ICAgIG1fc3RydWN0dXJlLnNldEVhcmx5VmFsdWUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJl
KTsKLSAgICAgICAgLy8gVmVyeSBmaXJzdCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2ZSBh
IHJlYWwgc3RydWN0dXJlLgotICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIWdsb2JhbERh
dGEuc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNDZWxsOjp+SlND
ZWxsKCkKKyAgICBpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiAg
ICAgeworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCi0gICAgaW5s
aW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAorICAgIGlubGluZSBjb25z
dCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fY2xhc3NJbmZvOwogICAg
IH0KIAogICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAppbmRleCAwODEyZjIxYzJhMjEzYThiZjFjNDliZDc2MGQ2MzQxM2NlOGY2
ODEzLi40ZTA1NTM1MmRkNWZmMmIyN2I3OTFiYzYzNDQ1ZDA5MTMyODI2MWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNzMsMTEgKzczLDYg
QEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW4KICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLUpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgOiBCYXNlKFZQ
dHJTdGVhbGluZ0hhY2spCi17Ci19Ci0KIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICA6IEJhc2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4
ZWN1dGFibGUoKQpAQCAtMTEzLDE0ICsxMDgsMTEgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwK
ICAgICBwdXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9kZS0+
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZhbHVl
KCkpOwogfQogCi1KU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCit2b2lkIEpTRnVuY3Rpb246OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRh
Ojpqc0Z1bmN0aW9uVlB0cik7Ci19Ci0KLXZvaWQgSlNGdW5jdGlvbjo6dnRhYmxlQW5jaG9yKCkK
LXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIldlIG5lZWQgc29tZXRoaW5nIGhlcmUgdGhhdCBWaXN1
YWwgU3R1ZGlvIGNhbid0IG9wdGltaXplIGF3YXkuXG4iKTsKKyAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlQodGhpc09iamVj
dC0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZigmSlNGdW5jdGlvbjo6c19pbmZvKSk7CisgICAg
dGhpc09iamVjdC0+SlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24oKTsKIH0KIAogdm9pZCBjcmVhdGVE
ZXNjcmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgY2hhciogbWVzc2FnZSkKQEAgLTEzOCw3ICsxMzAs
NyBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAg
ICAKLSAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgp
LCBkaXNwbGF5TmFtZSkpCisgICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoZGlzcGxh
eU5hbWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1
ZSgpOwogICAgIAogICAgIHJldHVybiBVU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYjc1MzMyYTU3NDAxNDI2MDNiOWRkYTliZDdlNGZh
MTY2NzM2MmE1My4uOTg4YWUxMjEzZTViNTlmODg1YmMwN2Y5NzQ4MzVkMjNlM2Y3NDk3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMzUsNyArMzUs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFz
cyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7Ci0gICAgY2xhc3MgVlB0
ckhhY2tFeGVjdXRhYmxlOwogICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIFNwZWN1bGF0
aXZlSklUOwogICAgIGNsYXNzIEpJVENvbXBpbGVyOwpAQCAtNjUsOCArNjQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
dnRhYmxlQW5jaG9yKCk7IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIG9wdGltaXphdGlvbnMg
bm8gbG9uZ2VyIHJlbHkgb24gdGVzdGluZyB2dGFibGVzCisgICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUq
KTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0
NCw4ICsxNDIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
ZXhwbGljaXQgSlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7Ci0KICAgICAgICAgYm9v
bCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1Zh
bHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApp
bmRleCBhNTM1ZmMyNDdkYjI4NDg2MWJlOTNkOGJhYTYxYWY3ZDc0ODgzMDNlLi4yMmU3NjkzZGNm
YjZjMTAzOWMwNzRjZGY2N2ExODkyMThmNTIyZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTEwOSwxMiArMTA5LDYgQEAgZXh0ZXJu
IGNvbnN0IEhhc2hUYWJsZSByZWdFeHBQcm90b3R5cGVUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNo
VGFibGUgc3RyaW5nVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHN0cmluZ0NvbnN0cnVj
dG9yVGFibGU7CiAKLXZvaWQqIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdFZQdHI7Ci12b2lk
KiBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyOwotdm9pZCogSlNHbG9iYWxEYXRhOjpqc0J5dGVB
cnJheVZQdHI7Ci12b2lkKiBKU0dsb2JhbERhdGE6OmpzU3RyaW5nVlB0cjsKLXZvaWQqIEpTR2xv
YmFsRGF0YTo6anNGdW5jdGlvblZQdHI7Ci0KICNpZiBDT01QSUxFUihHQ0MpCiAvLyBXb3JrIGFy
b3VuZCBmb3IgZ2NjIHRyeWluZyB0byBjb2FsZXNjZSBvdXIgcmVhZHMgb2YgdGhlIHZhcmlvdXMg
Y2VsbCB2cHRycwogI2RlZmluZSBDTE9CQkVSX01FTU9SWSgpIGRvIHsgXApAQCAtMTI0LDUyICsx
MTgsNiBAQCB2b2lkKiBKU0dsb2JhbERhdGE6OmpzRnVuY3Rpb25WUHRyOwogI2RlZmluZSBDTE9C
QkVSX01FTU9SWSgpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAotdm9pZCBKU0dsb2Jh
bERhdGE6OnN0b3JlVlB0cnMoKQotewotICAgIC8vIEVub3VnaCBzdG9yYWdlIHRvIGZpdCBhIEpT
QXJyYXksIEpTQnl0ZUFycmF5LCBKU1N0cmluZywgb3IgSlNGdW5jdGlvbi4KLSAgICAvLyBDT01Q
SUxFX0FTU0VSVFMgYmVsb3cgY2hlY2sgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgY2hhciBzdG9y
YWdlWzY0XTsKLQotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0ZpbmFsT2JqZWN0KSA8PSBz
aXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0ZpbmFsT2JqZWN0X211c3RfYmVfbGVzc190aGFuX3N0
b3JhZ2UpOwotICAgIEpTQ2VsbCoganNGaW5hbE9iamVjdCA9IG5ldyAoc3RvcmFnZSkgSlNGaW5h
bE9iamVjdChKU0ZpbmFsT2JqZWN0OjpWUHRyU3RlYWxpbmdIYWNrKTsKLSAgICBDTE9CQkVSX01F
TU9SWSgpOwotICAgIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdFZQdHIgPSBqc0ZpbmFsT2Jq
ZWN0LT52cHRyKCk7Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNBcnJheSkgPD0gc2l6
ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNBcnJheV9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsK
LSAgICBKU0NlbGwqIGpzQXJyYXkgPSBuZXcgKHN0b3JhZ2UpIEpTQXJyYXkoSlNBcnJheTo6VlB0
clN0ZWFsaW5nSGFjayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6
OmpzQXJyYXlWUHRyID0ganNBcnJheS0+dnB0cigpOwotCi0gICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKEpTQnl0ZUFycmF5KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0J5dGVBcnJheV9t
dXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzQnl0ZUFycmF5ID0gbmV3
IChzdG9yYWdlKSBKU0J5dGVBcnJheShKU0J5dGVBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7Ci0g
ICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6OmpzQnl0ZUFycmF5VlB0ciA9
IGpzQnl0ZUFycmF5LT52cHRyKCk7Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNTdHJp
bmcpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTU3RyaW5nX211c3RfYmVfbGVzc190aGFu
X3N0b3JhZ2UpOwotICAgIEpTQ2VsbCoganNTdHJpbmcgPSBuZXcgKHN0b3JhZ2UpIEpTU3RyaW5n
KEpTU3RyaW5nOjpWUHRyU3RlYWxpbmdIYWNrKTsKLSAgICBDTE9CQkVSX01FTU9SWSgpOwotICAg
IEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRyID0ganNTdHJpbmctPnZwdHIoKTsKLQotICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihKU0Z1bmN0aW9uKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVv
Zl9KU0Z1bmN0aW9uX211c3RfYmVfbGVzc190aGFuX3N0b3JhZ2UpOwotICAgIEpTQ2VsbCoganNG
dW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNGdW5jdGlvbihKU0NlbGw6OlZQdHJTdGVhbGluZ0hh
Y2spOwotICAgIENMT0JCRVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0Z1bmN0aW9u
VlB0ciA9IGpzRnVuY3Rpb24tPnZwdHIoKTsKLQotICAgIC8vIFVudGlsIHdlIGZ1bGx5IHJlbW92
ZSBvdXIgcmVsaWFuY2Ugb24gdnB0cnMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnli
b2R5IHRoYXQgCi0gICAgLy8gd2UgdGhpbmsgaGFzIGEgdW5pcXVlIHZpcnR1YWwgcG9pbnRlciBh
Y3R1YWxseSBkb2VzLgotICAgIGlmIChqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0FycmF5VlB0cgot
ICAgICAgICB8fCBqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0J5dGVBcnJheVZQdHIKLSAgICAgICAg
fHwganNGaW5hbE9iamVjdFZQdHIgPT0ganNTdHJpbmdWUHRyCi0gICAgICAgIHx8IGpzRmluYWxP
YmplY3RWUHRyID09IGpzRnVuY3Rpb25WUHRyCi0gICAgICAgIHx8IGpzQXJyYXlWUHRyID09IGpz
Qnl0ZUFycmF5VlB0cgotICAgICAgICB8fCBqc0FycmF5VlB0ciA9PSBqc1N0cmluZ1ZQdHIKLSAg
ICAgICAgfHwganNBcnJheVZQdHIgPT0ganNGdW5jdGlvblZQdHIKLSAgICAgICAgfHwganNCeXRl
QXJyYXlWUHRyID09IGpzU3RyaW5nVlB0cgotICAgICAgICB8fCBqc0J5dGVBcnJheVZQdHIgPT0g
anNGdW5jdGlvblZQdHIKLSAgICAgICAgfHwganNTdHJpbmdWUHRyID09IGpzRnVuY3Rpb25WUHRy
KQotICAgICAgICBDUkFTSCgpOwotfQotCiBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZFN0YWNrVHlw
ZSwgSGVhcFNpemUgaGVhcFNpemUpCiAgICAgOiBnbG9iYWxEYXRhVHlwZShnbG9iYWxEYXRhVHlw
ZSkKICAgICAsIGNsaWVudERhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKaW5kZXggMTM5ZGQ0MjUxZDJmMjA0NGFhZmIwODZmN2NiYjRlNThhZDFi
OWY5MC4uMTYxOWY5Mjk3MGVkNzc5YmRiZjRiNmM4MmFkZGRiYzAxZGU0N2MyYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTEwNSwxOCArMTA1
LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IFR5cGVkQXJyYXlEZXNjcmlwdG9y
IHsKICAgICAgICAgVHlwZWRBcnJheURlc2NyaXB0b3IoKQotICAgICAgICAgICAgOiBtX3ZwdHIo
MCkKKyAgICAgICAgICAgIDogbV9jbGFzc0luZm8oMCkKICAgICAgICAgICAgICwgbV9zdG9yYWdl
T2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fbGVuZ3RoT2Zmc2V0KDApCiAgICAgICAgIHsKICAg
ICAgICAgfQotICAgICAgICBUeXBlZEFycmF5RGVzY3JpcHRvcih2b2lkKiB2cHRyLCBzaXplX3Qg
c3RvcmFnZU9mZnNldCwgc2l6ZV90IGxlbmd0aE9mZnNldCkKLSAgICAgICAgICAgIDogbV92cHRy
KHZwdHIpCisgICAgICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yKGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBzaXplX3Qgc3RvcmFnZU9mZnNldCwgc2l6ZV90IGxlbmd0aE9mZnNldCkKKyAgICAg
ICAgICAgIDogbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICAgICAgICAgLCBtX3N0b3JhZ2VP
ZmZzZXQoc3RvcmFnZU9mZnNldCkKICAgICAgICAgICAgICwgbV9sZW5ndGhPZmZzZXQobGVuZ3Ro
T2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCogbV92cHRyOworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBzaXplX3QgbV9zdG9y
YWdlT2Zmc2V0OwogICAgICAgICBzaXplX3QgbV9sZW5ndGhPZmZzZXQ7CiAgICAgfTsKQEAgLTE5
MywxMyArMTkzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHJlZ0V4cFN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlQ2hh
aW5TdHJ1Y3R1cmU7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwotICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cjsKLSAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7Ci0gICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIHZvaWQqIGpzQnl0ZUFycmF5VlB0cjsKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgdm9pZCoganNTdHJpbmdWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSB2b2lkKiBqc0Z1bmN0aW9uVlB0cjsKLQogICAgICAgICBJZGVudGlmaWVyVGFibGUqIGlkZW50
aWZpZXJUYWJsZTsKICAgICAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CiAg
ICAgICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7IC8vIExpc3RzIGFy
ZSBzdXBwb3NlZCB0byBiZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHRvIGhhdmUgdGhlaXIgZWxl
bWVudHMgcHJvcGVybHkgbWFya2VkLCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZSAtIGJ1dCB0
aGlzIGxpc3QgaGFzIG5vdGhpbmcgdG8gbWFyay4KQEAgLTM0MCw3ICszMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNkZWZpbmUgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24odHlwZSwgY2FwaXRh
bGl6ZWRUeXBlKSBcCiAgICAgICAgIHZvaWQgcmVnaXN0ZXJUeXBlZEFycmF5RGVzY3JpcHRvcihj
b25zdCBjYXBpdGFsaXplZFR5cGUjI0FycmF5KiwgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpIFwKICAgICAgICAgeyBcCi0gICAgICAgICAgICBBU1NFUlQoIW1fIyN0eXBl
IyNBcnJheURlc2NyaXB0b3IubV92cHRyIHx8IG1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3IubV92
cHRyID09IGRlc2NyaXB0b3IubV92cHRyKTsgXAorICAgICAgICAgICAgQVNTRVJUKCFtXyMjdHlw
ZSMjQXJyYXlEZXNjcmlwdG9yLm1fY2xhc3NJbmZvIHx8IG1fIyN0eXBlIyNBcnJheURlc2NyaXB0
b3IubV9jbGFzc0luZm8gPT0gZGVzY3JpcHRvci5tX2NsYXNzSW5mbyk7IFwKICAgICAgICAgICAg
IG1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yOyBcCiAgICAgICAgIH0gXAog
ICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgdHlwZSMjQXJyYXlEZXNjcmlwdG9y
KCkgY29uc3QgeyByZXR1cm4gbV8jI3R5cGUjI0FycmF5RGVzY3JpcHRvcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM0Mjk4
NWMxNGZiYjJhNjQxOGQ2ZDUzYTczODI5MWMxMzgxNjhkYzkuLjQyMGJjODljMWJkYjI4YjY4ZGZm
ZDE3YzgxZmI3ODQ0ZmU3ZTRhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEyMiw2ICsxMjIsMTEgQEAgSlNHbG9iYWxPYmpl
Y3Q6On5KU0dsb2JhbE9iamVjdCgpCiAgICAgfQogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxs
KS0+SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpOworfQorCiB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpCiB7CiAgICAgQVNTRVJUKEpTTG9jazo6
Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZjkzY2Q4YjE4MTAxMzM4YzUyY2FjYzg1
YTNhZDNhMDAzYzJjN2QxLi43ODJlM2EzYzEzYjQzMjU0Zjk0NWZhNjk1Y2IyOGQxYTljMDcwYzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTE5Myw3ICsxOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHVi
bGljOgotICAgICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOworICAgICAgICB+SlNHbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwCmluZGV4
IDg1YmZiN2EzODY2NjQ5MzM2OTdmZmM2NzI1YmNjYTVjZTUwMzljYTQuLjhiMmE3YTFlZjUxZTI0
ZTcxODZlNzYwMGY0YmYxNTZhZTUyMDVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNHbG9iYWxUaGlzKTsKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTR2xvYmFsVGhpcyk7CiAKIGNvbnN0IENsYXNzSW5mbyBK
U0dsb2JhbFRoaXM6OnNfaW5mbyA9IHsgIkpTR2xvYmFsVGhpcyIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxUaGlzKSB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCmluZGV4IDkxZjkwZDYyNDAx
OTg5ZDg4N2RiMDZmZTAyOWU1Zjc1YTJmMzQyMjYuLjY4MjQwMDI5MjdkZTkwYTg5M2I0OTkyMWFk
NDk2NTAzMmMxNzFiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTm90QW5PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Tm90QW5PYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU05vdEFuT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKEpTTm90QW5PYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gSlNOb3RBbk9i
amVjdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU05vdEFuT2JqZWN0KSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGVhNGMxYWQ2NjdhOWNhNTdmNTU1YzYwNDRhMTMz
YzQ2YWY3NjJlMzQuLjA1YzZjMjk1MzVlZjI1YzNkZmJhMDUyODM0YjFlN2U4YmRiNWY3MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC00Myw2
ICs0Myw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U09OT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTT05PYmplY3QpOwog
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2Uo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJv
dG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSopOwpAQCAtNDk1LDcgKzQ5Niw3IEBAIGJvb2wgU3Ry
aW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdp
ZmllciwgVVN0cmluZ0J1CiAgICAgLy8gRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplLgog
ICAgIGlmICghbV9pbmRleCkgewogICAgICAgICBpZiAobV9pc0FycmF5KSB7Ci0gICAgICAgICAg
ICBtX2lzSlNBcnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdC5n
ZXQoKSk7CisgICAgICAgICAgICBtX2lzSlNBcnJheSA9IGlzSlNBcnJheShtX29iamVjdC5nZXQo
KSk7CiAgICAgICAgICAgICBtX3NpemUgPSBtX29iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTY2OSw3ICs2NzAs
NyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVk
KQogICAgICAgICAgICAgYXJyYXlTdGFydFN0YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheVN0
YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwg
YXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cygmSlNBcnJh
eTo6c19pbmZvKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzSlNBcnJheShhc09iamVjdChp
blZhbHVlKSkgfHwgYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8p
KTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5z
aXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsK
IApAQCAtNjk0LDcgKzY5NSw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhK
U1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2sucmVtb3Zl
TGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5
KSAmJiBhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAgICAgICAgICAgIGlmIChpc0pT
QXJyYXkoYXJyYXkpICYmIGFycmF5LT5jYW5HZXRJbmRleChpbmRleCkpCiAgICAgICAgICAgICAg
ICAgICAgIGluVmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTcxNyw3
ICs3MTgsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZp
bHRlcmVkKQogICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkp
CiAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoYXJyYXksIG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCkpOwogICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMtPmds
b2JhbERhdGEoKSwgYXJyYXkpICYmIGFycmF5LT5jYW5TZXRJbmRleChpbmRleFN0YWNrLmxhc3Qo
KSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYXJyYXkpICYmIGFycmF5LT5j
YW5TZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBh
cnJheS0+c2V0SW5kZXgobV9leGVjLT5nbG9iYWxEYXRhKCksIGluZGV4U3RhY2subGFzdCgpLCBm
aWx0ZXJlZFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoYXJyYXksIG1fZXhlYywg
aW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOwpAQCAtNzMwLDcgKzczMSw3IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAg
ICAgICAgICBvYmplY3RTdGFydFN0YXRlOgogICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFydFN0
YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKCFpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09i
amVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cygmSlNBcnJheTo6
c19pbmZvKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpc0pTQXJyYXkoYXNPYmplY3QoaW5W
YWx1ZSkpICYmICFhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykp
OwogICAgICAgICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBhcnJheVN0YWNrLnNp
emUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwog
CkBAIC03OTcsNyArNzk4LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpT
VmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChpblZh
bHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEo
KSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQorICAgICAg
ICAgICAgICAgIGlmIChpc0pTQXJyYXkob2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0Fy
cmF5OjpzX2luZm8pKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5U3RhcnRTdGF0ZTsK
ICAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0U3RhdGU7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAxNGYwOTM1OTY3NmM3
NWU3M2FlNTViNWNhMmExZjIzMzI0NGIzMmZiLi45Y2MyOTYxN2FlMmEyZTkzMzk1ODRlMDI1YWU4
NDAyMmIyZTAxZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCkBAIC00NiwxNSArNDYsMjIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU09iamVj
dCk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTTm9uRmluYWxPYmplY3QpOwogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0ZpbmFsT2JqZWN0KTsKIAorQVNTRVJUX0hBU19UUklWSUFM
X0RFU1RSVUNUT1IoSlNPYmplY3QpOworCiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IgPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9w
ZXJ0eS4iOwogCiBjb25zdCBDbGFzc0luZm8gSlNPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIs
IDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNPYmplY3QpIH07CiAKIGNvbnN0IENsYXNz
SW5mbyBKU0ZpbmFsT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmluYWxPYmplY3QpIH07CiAKLXZvaWQgSlNGaW5h
bE9iamVjdDo6dnRhYmxlQW5jaG9yKCkKK3ZvaWQgSlNGaW5hbE9iamVjdDo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKS0+SlNGaW5hbE9i
amVjdDo6fkpTRmluYWxPYmplY3QoKTsKK30KKwordm9pZCBKU05vbkZpbmFsT2JqZWN0OjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBwcmludGYoIlNvbWV0aGluZyBWaXN1YWwgU3R1ZGlv
IGNhbid0IG9wdGltaXplIGF3YXkuXG4iKTsKKyAgICBqc0Nhc3Q8SlNOb25GaW5hbE9iamVjdCo+
KGNlbGwpLT5KU05vbkZpbmFsT2JqZWN0Ojp+SlNOb25GaW5hbE9iamVjdCgpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKQEAgLTgxLDggKzg4LDkgQEAgdm9pZCBKU09iamVjdDo6
ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAgIGRlbGV0ZSBbXSBqc0Nhc3Q8SlNPYmplY3QqPihj
ZWxsKS0+bV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnZ0YWJs
ZUFuY2hvcigpCit2b2lkIEpTT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBq
c0Nhc3Q8SlNPYmplY3QqPihjZWxsKS0+SlNPYmplY3Q6On5KU09iamVjdCgpOwogfQogCiB2b2lk
IEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBmNTY4ZDQy
YTQ2ZjIxOGNmYTRlOGJjZTgyM2EyOWRiOTdhNGM0NmU2Li4zNjNlYzMwNjEzZThjZjkyNzZlMDhm
N2EzZjhmODExNjM4YWYxOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKQEAgLTgwLDcgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2dGFibGVB
bmNob3IoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKQEAg
LTI0Myw2ICsyNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChwcm90
b3R5cGUoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJvdG90
eXBlKCkpKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lU3RvcmFnZSwgc3RhdGlj
X2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsg
MSkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc09iamVjdCgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTI1NSwxMSAr
MjU2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRvIGluc3RhbnRpYXRlIG9iamVj
dHMgeW91IGxpa2VseSB3YW50IEpTRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICAvLyBUbyBj
cmVhdGUgZGVyaXZlZCB0eXBlcyB5b3UgbGlrZWx5IHdhbnQgSlNOb25GaW5hbE9iamVjdCwgYmVs
b3cuCiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKLSAgICAgICAgSlNPYmplY3QoVlB0clN0ZWFsaW5nSGFj
a1R5cGUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQotICAgICAgICAgICAgOiBKU0Nl
bGwoVlB0clN0ZWFsaW5nSGFjaykKLSAgICAgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5s
aW5lU3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCkKLSAgICAgICAgewotICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KQEAgLTMxOSwxMiArMzE1LDkgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAg
ICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19p
bmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CisKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoVlB0
clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hh
Y2ssIG1faW5saW5lU3RvcmFnZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgCiAgICAgICAg
IGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKQEAgLTMzNSw2ICszMjgsNyBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNO
b25GaW5hbE9iamVjdF9pbmxpbmVTdAogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSwgbV9pbmxpbmVTdG9yYWdlKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9CSkVD
VF9PRkZTRVRPRihKU05vbkZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRv
dWJsZSkpKTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSA9PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0
eSk7CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkpOwogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgpAQCAtMzQ5LDExICszNDMsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdAogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOwogCi0gICAgICAgIGV4cGxp
Y2l0IEpTRmluYWxPYmplY3QoVlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgICAgICAgICA6IEpT
T2JqZWN0KFZQdHJTdGVhbGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0gICAgICAgIAogICAgICAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpTRmluYWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNGaW5h
bE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpOwpAQCAtMzc0LDIxICszNjMsMzIgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5saW5l
U3QKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG1faW5saW5l
U3RvcmFnZSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9i
amVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7CiAgICAgICAgICAgICBB
U1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKGNs
YXNzSW5mbygpKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CisKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAg
ICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9yKCk7
Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNPYmpl
Y3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4g
bV9pbmxpbmVTdG9yYWdlW0pTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5XTsKICAg
ICB9OwogCitpbmxpbmUgYm9vbCBpc0pTRmluYWxPYmplY3QoSlNDZWxsKiBjZWxsKQoreworICAg
IHJldHVybiBjZWxsLT5jbGFzc0luZm8oKSA9PSAmSlNGaW5hbE9iamVjdDo6c19pbmZvOworfQor
CitpbmxpbmUgYm9vbCBpc0pTRmluYWxPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gdmFsdWUuaXNDZWxsKCkgJiYgaXNKU0ZpbmFsT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKTsKK30K
KwogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkKIHsKICAg
ICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkg
PT0gT0JKRUNUX09GRlNFVE9GKEpTTm9uRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcAppbmRleCBmNDMxMDQyOWE3N2I2NjE4MGQ0M2VkYmFlYTM3YjhkNjQ2MGY4
YTU3Li43MjA3YTRjNWNjY2RiZGEyYTc1MDQ1NTMxZTk0OWJlMWUwNGZkOWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAgICBy
ZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKIH0KIAordm9pZCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcio+KGNlbGwpLT5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcigpOworfQorCiBKU1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBzaXplX3QgaSkKIHsKICAgICBKU1ZhbHVl
IGlkZW50aWZpZXIgPSBtX2pzU3RyaW5nc1tpXS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCA5N2E1
MDMyNmJkYzllY2M0Yjk4MjRlMmY1MmNlNmMyMDYwYjU2NGQyLi5jZTJlNDRlODExYjNjNjRiMjQ1
Zjg5MTUwODYwMGNkZjdhNDE2MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC01Miw3ICs1Miw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IHByb3BlcnR5TmFtZUFycmF5RGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKKyAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29t
cG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCmlu
ZGV4IGQ5MGM2OGM4MDFiNjNlMWU5OTc2NTY4NjQ2NzQ4ZDc1Y2ZiMDk0ZDcuLjMwODRmM2YyOTY2
NTUxMDk1NTVjNTUyMjU5ZWNkNTQ4M2FkOGFhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCkBAIC0zNCw2ICszNCwx
MSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTU3RhdGljU2NvcGVPYmplY3QpOwogCiBj
b25zdCBDbGFzc0luZm8gSlNTdGF0aWNTY29wZU9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1N0YXRpY1Njb3BlT2Jq
ZWN0KSB9OwogCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQoreworICAgIGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPkpTU3RhdGljU2Nv
cGVPYmplY3Q6On5KU1N0YXRpY1Njb3BlT2JqZWN0KCk7Cit9CisKIHZvaWQgSlNTdGF0aWNTY29w
ZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0
aWNTY29wZU9iamVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmluZGV4IDIzYTNhY2FkNzhjZWU0ZTc2MDc5ZTg5
ZTJhYTQ1ZjA1NWZkNTJmZmYuLmRlMGI4MTYyMTc4OTc5ZTYwMTAzYWIzMjI2ZWIxZGJhMDMyNDBi
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmgKQEAgLTY3LDcgKzY3LDkgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgICAg
IDogSlNWYXJpYWJsZU9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEo
KS5zdGF0aWNTY29wZVN0cnVjdHVyZS5nZXQoKSwgJm1fc3ltYm9sVGFibGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8UmVnaXN0ZXIqPigmbV9yZWdpc3RlclN0b3JlICsgMSkpCiAgICAgICAgIHsKICAgICAg
ICAgfQotICAgICAgICAKKworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwor
CiAgICAgICAgIFN5bWJvbFRhYmxlIG1fc3ltYm9sVGFibGU7CiAgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX3JlZ2lzdGVyU3RvcmU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCAwZTZhNDhhMDdhZjllM2I5YjczZjIzZDRhODI0
ZDllYWZmYTA4N2RlLi42MmNjNTVjZmNjMDE4M2I1ZTMwMzgxYTRjMTE0YzdmNjRmZDBjMGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00NSw5ICs0
NSwxMCBAQCB2b2lkIEpTU3RyaW5nOjpSb3BlQnVpbGRlcjo6ZXhwYW5kKCkKICAgICBhcHBlbmQo
anNTdHJpbmcpOwogfQogCi1KU1N0cmluZzo6fkpTU3RyaW5nKCkKK3ZvaWQgSlNTdHJpbmc6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRh
Ojpqc1N0cmluZ1ZQdHIpOworICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3Ry
aW5nKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNTdHJpbmc6On5KU1N0cmluZygpOwogfQog
CiB2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA3
Y2Y4MzgyMTlhNWJhNTNmMTdmYWJkODkwZGRlMmJjMmUyZDIwMmM0Li5kNTFhMjNmZjI4MzZjOWQ3
NjlhMmU3NWMxYjdhMjFlNGYzNmQyNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKQEAgLTY5LDYgKzY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOworCiAgICAgICAgIGNsYXNzIFJvcGVCdWlsZGVyIHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgUm9wZUJ1aWxkZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMTk3LDgg
KzE5OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgfkpTU3RyaW5nKCk7Ci0KICAgICAgICAgY29u
c3QgVVN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoaXNSb3BlKCkpCkBAIC0yNDMsMTEgKzI0Myw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU1N0cmluZyhWUHRyU3RlYWxpbmdIYWNrVHlw
ZSkgCi0gICAgICAgICAgICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQogICAgICAgICB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAg
IHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpAQCAtMjc5LDE2ICsyNzQs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlKTsK
IAotICAgIC8vIFdoZW4gYW4gb2JqZWN0IGlzIGNyZWF0ZWQgZnJvbSBhIGRpZmZlcmVudCBETEws
IE1TVkMgY2hhbmdlcyB2cHRyIHRvIGEgImxvY2FsIiBvbmUgcmlnaHQgYWZ0ZXIgaW52b2tpbmcg
YSBjb25zdHJ1Y3RvciwKLSAgICAvLyBzZWUgPGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91
cC9taWNyb3NvZnQucHVibGljLnZjLmxhbmd1YWdlL21zZy81NWNkY2VmZWFmNzcwMjEyPi4KLSAg
ICAvLyBUaGlzIGJyZWFrcyBpc0pTU3RyaW5nKCksIGFuZCB3ZSBkb24ndCBuZWVkIHRoYXQgaGFj
ayBhbnl3YXksIHNvIHdlIGNoYW5nZSB2cHRyIGJhY2sgdG8gcHJpbWFyeSBvbmUuCi0gICAgLy8g
VGhlIGJlbG93IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJ5IGFueSBpbmxpbmUgZnVuY3Rpb24g
dGhhdCBpbnZva2VzIGEgSlNTdHJpbmcgY29uc3RydWN0b3IuCi0jaWYgQ09NUElMRVIoTVNWQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpCi0gICAgaW5saW5lIEpTU3RyaW5n
KiBmaXh1cFZQdHIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1N0cmluZyogc3RyaW5nKSB7
IHN0cmluZy0+c2V0VlB0cihnbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpOyByZXR1cm4gc3RyaW5n
OyB9Ci0jZWxzZQotICAgIGlubGluZSBKU1N0cmluZyogZml4dXBWUHRyKEpTR2xvYmFsRGF0YSos
IEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQotI2VuZGlmCi0KICAgICBpbmxp
bmUgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NF
UlQodmFsdWUuYXNDZWxsKCktPmlzU3RyaW5nKCkpOwpAQCAtMzA0LDcgKzI4OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIo
Z2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZygmYywgMSku
aW1wbCgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBV
U3RyaW5nKCZjLCAxKS5pbXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNT
aW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBz
LCB1bnNpZ25lZCBvZmZzZXQpCkBAIC0zMTQsNyArMjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFVDaGFyIGMgPSBzW29mZnNldF07CiAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNo
YXJhY3RlclN0cmluZykKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmlu
Z3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwotICAgICAgICByZXR1cm4g
Zml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFN0cmlu
Z0ltcGw6OmNyZWF0ZShzLmltcGwoKSwgb2Zmc2V0LCAxKSkpOworICAgICAgICByZXR1cm4gSlNT
dHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBv
ZmZzZXQsIDEpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIHMpCkBAIC0zMjIsMTMg
KzMwNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKHMpOwogICAgICAgICBB
U1NFUlQoc1swXSk7CiAgICAgICAgIEFTU0VSVChzWzFdKTsKLSAgICAgICAgcmV0dXJuIGZpeHVw
VlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBVU3RyaW5nKHMp
LmltcGwoKSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwg
VVN0cmluZyhzKS5pbXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNOb250
cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7Ci0gICAgICAgIHJldHVybiBm
aXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBs
KCkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1w
bCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIEpTU3RyaW5nOjpnZXRJbmRleChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCkBAIC0zNTAsNyArMzM1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZp
eHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBzLmltcGwo
KSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBs
KCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBA
IC0zNzYsNyArMzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoYyA8PSBt
YXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERh
dGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6
Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChzLmlt
cGwoKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRl
SGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChzLmltcGwoKSwg
b2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3Ry
aW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC0zOTEsNyArMzc2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZpeHVw
VlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0
YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBvZmZzZXQsIGxlbmd0aCkpKTsKKyAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBTdHJp
bmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgfQogCiAgICAg
aW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgVVN0cmluZyYgcykKQEAgLTQwNCwxMiArMzg5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAg
ICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIo
Z2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIHMu
aW1wbCgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigq
Z2xvYmFsRGF0YSwgcy5pbXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNT
dHJpbmdCdWlsZGVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZU51bGwoKmdsb2JhbERh
dGEpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVOdWxsKCpnbG9iYWxEYXRhKTsK
ICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKSB7IHJldHVybiBqc0VtcHR5U3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCkpOyB9CkBAIC00
NDgsNyArNDMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPnZwdHIoKSA9
PSBnbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHI7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5n
KEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8o
KSA9PSAmSlNTdHJpbmc6OnNfaW5mbzsgfQogCiAgICAgaW5saW5lIGJvb2wgSlNDZWxsOjp0b0Jv
b2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAKaW5kZXggOWYzOGVhOTg3MmM0
ZjcyYjExODNhZDFiZThjZTRmZmZhODAwNTk3Ny4uNzA2ZTNkZWJiYzNjZjZiNmZhMmIxZmZlNjkz
M2ZkOTUwOWNlMmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5jcHAKQEAgLTM3LDggKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUpTVmFyaWFibGVPYmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCkKK3ZvaWQgSlNWYXJpYWJs
ZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PEpTVmFyaWFibGVP
YmplY3QqPihjZWxsKS0+SlNWYXJpYWJsZU9iamVjdDo6fkpTVmFyaWFibGVPYmplY3QoKTsKIH0K
IAogYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmluZGV4IGU0OWZi
NzFkZjJlY2I5ZGY3OTZiMmU3YjhkZWQ5ZTc2ODRhYWQ4MzAuLjhhNWM1YTBmMzE0ZjkyZDYyZDNk
NWU1NzM2NWVhYTNiNWZkZDRjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKm1f
c3ltYm9sVGFibGU7IH0KIAotICAgICAgICB2aXJ0dWFsIH5KU1ZhcmlhYmxlT2JqZWN0KCk7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuY3BwCmluZGV4IGNhNWJkODc1YzNkMGE2Y2JmNWE4ODJiOTFlNTZhNDg5Y2I5ZDc1ZDIuLmY4
ZjU3MjdkODJjZDY3Njk2MjI2ODE4ZWVlNzkwZDljZDQyZDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcApAQCAtMjUsMTAgKzI1
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTV3Jh
cHBlck9iamVjdCk7Ci0KLUpTV3JhcHBlck9iamVjdDo6fkpTV3JhcHBlck9iamVjdCgpCi17Ci19
CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1dyYXBwZXJPYmplY3QpOwogCiB2b2lk
IEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBw
ZXJPYmplY3QuaAppbmRleCA3MzcxM2MwYjM0YzY0MjQyYTg0ZjJhZWRkMTdkNTE1NTk2YTEwZTQ2
Li42NWI0YmRiN2Y2MWUwMDAxMTE1MmUxYTBkNWFjZTFlYWI3NzdkOTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtNDYsOCArNDYs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgdmlydHVhbCB+SlNXcmFwcGVyT2Jq
ZWN0KCk7Ci0gICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtu
b3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMDA2NTU5ZGRkYTQ4MmFiZmNhOWJlZDFhMGMxNDVh
NGE5MzA2ODcyZS4uNThiMDkxMjJkNGFjMmRlZTcyZTU2Y2NhZWU0MzJiNTVmZDQwNmNjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTU5LDYg
KzU5LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y1RhbihFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKE1hdGhPYmplY3QpOworCiBjb25zdCBDbGFzc0luZm8gTWF0aE9iamVjdDo6
c19pbmZvID0geyAiTWF0aCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0
ZTo6bWF0aFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3QpIH07CiAKIC8qIFNv
dXJjZSBmb3IgTWF0aE9iamVjdC5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBkZGU5Mjc4NDhh
ZDhlMmVjZThjMDAzYmU3YWRiYzFhY2M0ZjRmYzY3Li5iNmFmZjkxNmU0ZGQ0YjhiMTIzOTY2NDYz
Y2Q1ODY4MjczYThiMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShOYXRpdmVFcnJvckNvbnN0cnVjdG9yKSB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDg0
YzYzZjE3ZThkMzEwZmNmNTNjNzEzNzU2YTFiOGFkN2U0N2MwMi4uZTg2M2U4NjMwOTgyMzg3YjJh
MjNlYTI4MTlmN2I4YWQwYThkNWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNDIsNiArNDIsOCBAQCBzdGF0aWMg
SlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKQogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFM
X0RFU1RSVUNUT1IoTnVtYmVyQ29uc3RydWN0b3IpOworCiBjb25zdCBDbGFzc0luZm8gTnVtYmVy
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNf
aW5mbywgMCwgRXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKE51bWJlckNvbnN0cnVjdG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIE51bWJlckNvbnN0
cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2Jq
ZWN0LmNwcAppbmRleCBiNzUxMDUzZmI5NjZiZGU4MmMwY2RhYmVlODQxNGJjNTA5YTg1ZjIxLi4x
ZmVhMjU0NjQ3YTRlZDAzODI2NjkxNzY1NTQyNTgwZTk0YjNkYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE51bWJlck9iamVj
dCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihOdW1iZXJPYmplY3QpOwogCiBjb25z
dCBDbGFzc0luZm8gTnVtYmVyT2JqZWN0OjpzX2luZm8gPSB7ICJOdW1iZXIiLCAmSlNXcmFwcGVy
T2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTnVtYmVyT2JqZWN0KSB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcAppbmRleCAzYmNiOWJiNWRjZjM0OTE4YzcxZmY2NjE5NTRjZWEyZjlmNjI3NWE3Li40NjEy
YjU2ZDJiYTU1ZTRjOTgzYzIzMzYyYjk2MTVhZjgzNDAzYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTY5LDYgKzY5LDcg
QEAgY29uc3QgQ2xhc3NJbmZvIE51bWJlclByb3RvdHlwZTo6c19pbmZvID0geyAiTnVtYmVyIiwg
Jk51bWJlck9iamVjdDo6c19pbmZvLCAwLAogKi8KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChOdW1iZXJQcm90b3R5cGUpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTnVtYmVy
UHJvdG90eXBlKTsKIAogTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA1OTUyY2U4MDljODdkMmMzODA1YWMy
Yjk3Y2E2NmMwNjg3ZGVjMzUwLi42NWQyOGMxOGMzMzNiM2MzODJhYWQyMDQ5MWY5OTQyN2Q1NDYx
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCkBAIC01NSw2ICs1NSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwogCiBu
YW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoT2JqZWN0Q29u
c3RydWN0b3IpOworCiBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpv
YmplY3RDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdENvbnN0cnVj
dG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBh
MWU0OTY2MzQ2NmQzNDBlNWNmMjExNjkxZjA4NTI0YWU1NDIyYzkxLi4zZjRkYzE5ZGIyYTIyYWU5
Mzg1NjU0NGQxNDdjODQ2Njc1ODliMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmco
RXhlY1N0YXRlKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOworCiBjb25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90
eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBF
eGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVj
dFByb3RvdHlwZSkgfTsKIAogLyogU291cmNlIGZvciBPYmplY3RQcm90b3R5cGUubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA5N2RhZTNlMDhi
ZjYyYzI5NGI5YjY4NjZjZmNiNzdhMzVjYzg0ZGY0Li5jYTIxNzRmYTFlNzIwNzg5MzNjMzUzYjE0
NzVmOGFlMDk5NjYwYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5oCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoKGxl
bmd0aDEgKyBsZW5ndGgyKSA8IGxlbmd0aDEpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOwogCi0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoJmdsb2JhbERh
dGEsIEpTU3RyaW5nOjpjcmVhdGUoZ2xvYmFsRGF0YSwgczEsIHMyKSk7CisgICAgICAgIHJldHVy
biBKU1N0cmluZzo6Y3JlYXRlKGdsb2JhbERhdGEsIHMxLCBzMik7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmlu
ZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyLCBjb25zdCBVU3RyaW5nJiB1MykKQEAgLTY5LDcgKzY5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICgobGVuZ3RoMSArIGxlbmd0aDIgKyBs
ZW5ndGgzKSA8IGxlbmd0aDMpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpOwogCi0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJp
bmc6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUxKSwg
anNTdHJpbmcoZ2xvYmFsRGF0YSwgdTIpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCB1MykpKTsKKyAg
ICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCB1MSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUyKSwganNTdHJpbmcoZ2xv
YmFsRGF0YSwgdTMpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3RyaW5ncywgdW5zaWduZWQgY291bnQpCkBA
IC0yMzAsOCArMjMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICh2MS5pc051bWJl
cigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA8
IHYyLmFzTnVtYmVyKCk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRh
LCB2MSkgJiYgaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2MikpCisgICAgICAgIGlmIChpc0pTU3Ry
aW5nKHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkKICAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyh2
MSktPnZhbHVlKGNhbGxGcmFtZSkgPCBhc1N0cmluZyh2MiktPnZhbHVlKGNhbGxGcmFtZSk7CiAK
ICAgICAgICAgZG91YmxlIG4xOwpAQCAtMjY1LDggKzI2NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICAgICAg
cmV0dXJuIHYxLmFzTnVtYmVyKCkgPD0gdjIuYXNOdW1iZXIoKTsKIAotICAgICAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7Ci0gICAgICAgIGlm
IChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIHYxKSAmJiBpc0pTU3RyaW5nKGdsb2JhbERhdGEsIHYy
KSkKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYmIGlzSlNTdHJpbmcodjIpKQogICAgICAg
ICAgICAgcmV0dXJuICEoYXNTdHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmco
djEpLT52YWx1ZShjYWxsRnJhbWUpKTsKIAogICAgICAgICBkb3VibGUgbjE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNWRmMzJiMTUzNjNhN2QyYjIwZmI4
ZWU0Nzk2YTFhNWZiMDBkMGU3Li41OTRiMjI1OTIwZDk0ODRhNDE5NThjY2ZhZWYzYjFhODUwYmQ5
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTI0OCwx
MSArMjQ4LDEzIEBAIHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0
dGVybnM7CiB9CiAKLVJlZ0V4cDo6flJlZ0V4cCgpCit2b2lkIFJlZ0V4cDo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCiB7CisgICAgUmVnRXhwKiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cCo+KGNl
bGwpOwogI2lmIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KICAgICBSZWdFeHBGdW5jdGlvbmFs
VGVzdENvbGxlY3Rvcjo6Z2V0KCktPmNsZWFyUmVnRXhwKHRoaXMpOwogI2VuZGlmCisgICAgdGhp
c09iamVjdC0+UmVnRXhwOjp+UmVnRXhwKCk7CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGVX
aXRob3V0Q2FjaGluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAppbmRleCBhYTNhNjFmNDZmOWMxYTM0ZjczMTE2YThhZjQxZmNlNGMwNDY0MDZl
Li42NWViNDg0OTk5MmNhNWU2ZTE4OWZlMjU0MmFkYzhhNzVmYjlkZGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAogICAgICAgICBzdGF0aWMgUmVnRXhw
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxh
Z3MpOwotICAgICAgICB+UmVnRXhwKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYg
RmxhZ0dsb2JhbDsgfQogICAgICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCAwM2QyZmQyYzBlZWFhMDQ1ODFj
NThkNmU5MTYxZjRhMGZlOWIxZjg5Li5hMjg3Mzc3YTIyZTkyZWU2ZDBhZTE1ZDI5MjRiNzU4ZDcy
ZGUzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuY3BwCkBAIC0xMTUsNiArMTE1LDExIEBAIHZvaWQgUmVnRXhwQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdF
eHBQCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250
RGVsZXRlIHwgRG9udEVudW0pOwogfQogCit2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKS0+
UmVnRXhwQ29uc3RydWN0b3I6On5SZWdFeHBDb25zdHJ1Y3RvcigpOworfQorCiBSZWdFeHBNYXRj
aGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgOiBKU0Fy
cmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSkKIHsKQEAgLTE0MCw2ICsxNDUsMTEgQEAgUmVnRXhw
TWF0Y2hlc0FycmF5Ojp+UmVnRXhwTWF0Y2hlc0FycmF5KCkKICAgICBkZWxldGUgc3RhdGljX2Nh
c3Q8UmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKj4oc3ViY2xhc3NEYXRhKCkpOwogfQogCit2b2lk
IFJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0
PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpLT5SZWdFeHBNYXRjaGVzQXJyYXk6On5SZWdFeHBN
YXRjaGVzQXJyYXkoKTsKK30KKwogdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmZpbGxBcnJheUlu
c3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUq
IGQgPSBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqPihzdWJjbGFzc0RhdGEo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAppbmRleCA1ZjkzMGViODk1N2QxNWFmYzViMDNiMzgzMTYwZGRiNTA5YTRjYmUzLi43ZmI4
OGQyYjQ0NmEyYTRmMTZlM2Y1YTdhNjg4NWM1ZjVkZDhhZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKQEAgLTk4LDYgKzk4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdFeHBDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKaW5kZXggMWNjODk4ZTI1NmQ1
MTZhMDQ1ODYyYmMwMTUxM2JlNjdmYThlYTg1OS4uMWMxMTdiMGQ4NWI1YzY5NjRmMGZiM2NlMjM5
M2VmNWZiZjBkZTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZWdFeHAtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgY3Rv
clByaXZhdGUpOwogICAgICAgICAgICAgcmV0dXJuIHJlZ0V4cDsKICAgICAgICAgfQotICAgICAg
ICB2aXJ0dWFsIH5SZWdFeHBNYXRjaGVzQXJyYXkoKTsKKyAgICAgICAgflJlZ0V4cE1hdGNoZXNB
cnJheSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAg
IHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXgg
NzIxM2RjMjdjMTU1NzdjYjI4NWJiNDI4MDg3MDM4Mzg2YmVmYzg0My4uNDU1M2Y3YWQwZDUyY2U4
ZjJlZGFhMjI5N2EzMDU3ZTJhMjY2N2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03NSw4ICs3NSw5IEBAIHZvaWQgUmVnRXhwT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLVJlZ0V4cE9iamVjdDo6flJlZ0V4cE9iamVj
dCgpCit2b2lkIFJlZ0V4cE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganND
YXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLT5SZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3QoKTsK
IH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKaW5kZXggYTExN2YzNjJjM2UzM2E4NzkxMzJhNmNhMjJiMWJlZjg1ZGFjN2Y1OS4u
ZWU5OGI2NjAyM2Y4MzBmOWI2NGVkZjFkNjgzMjVlZjJlNDUzMmQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTQ0LDggKzQ0LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgICAgICB9CiAKLSAg
ICAgICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0KCk7Ci0KICAgICAgICAgdm9pZCBzZXRSZWdFeHAo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHIpIHsgZC0+cmVnRXhwLnNldChnbG9i
YWxEYXRhLCB0aGlzLCByKTsgfQogICAgICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsgcmV0
dXJuIGQtPnJlZ0V4cC5nZXQoKTsgfQogCkBAIC03OSw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgUmVnRXhwKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNp
dENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNw
cAppbmRleCA3OWYyYTdhNDg0YTUzMDExNTNmODUzN2UzYThkMWVhNTM5OTVmYjcyLi4wOTlmN2Zk
ZTY4YmJiYzc2Yjc3ZjQyOTZmNmU4NzZhMWY3MWY4YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcApAQCAtMjksOSArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotU2NvcGVDaGFpbk5vZGU6On5TY29wZUNoYWluTm9kZSgpCi17Ci19CitBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihTY29wZUNoYWluTm9kZSk7CiAKICNpZm5kZWYgTkRF
QlVHCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCA0
ODM4NWQwY2JlMWE0ODhhZTc5Y2FhNmFhMzE1ODFkNzQ2MDBjNjhmLi5mZGU2OTBlYjRkOGRkMWJm
MTljNTdhMjdiYzM4MTViNWRhNDA3YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5TY29wZUNoYWluTm9kZSgpOwotCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwCmluZGV4IDIxMjgzZGJkMjI0MjVhMjA3ODBiMzNhMWEzMWU3N2IyODNiMjZmYWQuLmZi
ZDlkNWZiZDk3Y2MwM2JiNGQ3NmViMjBjZGE0OWI4Y2QyNTdlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKFN0cmljdEV2YWxBY3RpdmF0aW9uKTsKKwogY29uc3QgQ2xhc3NJbmZvIFN0cmlj
dEV2YWxBY3RpdmF0aW9uOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmljdEV2YWxBY3RpdmF0aW9uKSB9OwogCiBTdHJpY3RF
dmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDk2NTcwYjJjMDVhZDkxYTllYmNjZTU5OTE3NWJmODhiM2U0ZWFhMWMuLmQyZjc1YTA2
MGI1NWM0ZjcxYzY5YWZiNmY1MjU4ZmUyOTA4NTgyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ2LDYgKzQ2LDcg
QEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICovCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoU3RyaW5nQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoU3Ry
aW5nQ29uc3RydWN0b3IpOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggM2VlZDI2NzIzMTM0
MTRiMTNkYWZiNGZkOTYyOTJhNzIzZThkNmY4ZC4uNGEyNDY5OGZiMTY5ZTRhNjU5NTA4YTI4YWEz
ZTc5YmMxY2NmNWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoU3RyaW5nT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIFN0cmluZ09iamVjdDo6
c19pbmZvID0geyAiU3RyaW5nIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFN0cmluZ09iamVjdCkgfTsKIApAQCAtMzQsMTAgKzM1LDYgQEAgU3Ry
aW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBTdHJpbmdPYmplY3Q6OnZ0YWJsZUFuY2hvcigp
Ci17Ci19Ci0KIHZvaWQgU3RyaW5nT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTU3RyaW5nKiBzdHJpbmcpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5oCmluZGV4IGQ2NWVjYzU0MzJiYTE5NWQ5YTZlNDM4N2UyYmYwODFlNWQyNDA0ODkuLjgw
NmQwN2IzZDkyOGViMTA1NzYxOWEzODJhZmJjOWVjNzFkMGFiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0zMCw4ICszMCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1dyYXBwZXJPYmplY3Qg
QmFzZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9yKCk7Ci0KICAgICAgICAg
c3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc0Vt
cHR5U3RyaW5nKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggM2RlODk1MzQyMjY3ZmQ3OWFkY2I0MWFhMjE1Njc1NmM0
ZWZhZDYzMi4uOWJmMThkZTY5YWU2YTYxZGJkMTZhOWUzZGE1ZjRmMDM4YjVkZDlhOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBA
IC00NSw2ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdQcm90b3R5cGUpOworQVNTRVJUX0hBU19U
UklWSUFMX0RFU1RSVUNUT1IoU3RyaW5nUHJvdG90eXBlKTsKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQo
RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAppbmRleCA2YjRjYTJiZmZiNGM5NjE5NjYwMzEwYzJhYWFjMTA5MWRiMjc2Nzc3Li5kZGE4Yzcz
ZTkyZGY2ZDEzNDgwMDk0ZDI2YTUyODNjMTE5N2UzMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTIxOCw4ICsyMTgsOSBAQCBTdHJ1Y3R1cmU6
OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cnVjdHVyZSogcHJl
dmlvdXMpCiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldChnbG9iYWxEYXRhLCB0aGlzLCBwcmV2
aW91cy0+bV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCi1TdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUo
KQordm9pZCBTdHJ1Y3R1cmU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxT
dHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKIHZvaWQgU3Ry
dWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZTM3MmIyMDI2
NWZlYzA0MmM0ODBlMDllMzg3YTZhZjkyMzliOGM0Yy4uOTJlMWIzYjMzMDk4NzIyYTZjMDgxZmE5
YzhmYmNjNWNmOTgyZDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTdHJ1
Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0
Kik7CiAKLSAgICAgICAgflN0cnVjdHVyZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlv
bi4gIAogICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CkBAIC0zMzUsMTYgKzMzNSwxOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OnNldFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkgPT0gdGhp
cy0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9zdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpKTsKICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVj
dHVyZSk7CiAgICAgfQogCi0gICAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFz
c0luZm8oKSBjb25zdAorICAgIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6dmFsaWRh
dGVkQ2xhc3NJbmZvKCkgY29uc3QKICAgICB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0g
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsK
KyAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5mbygp
ID09IG1fY2xhc3NJbmZvKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xh
c3NJbmZvKCk7CisgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9j
bGFzc0luZm8pOwogI2VuZGlmCisgICAgICAgIHJldHVybiBtX2NsYXNzSW5mbzsKICAgICB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU0NlbGwq
IGNlbGwpCkBAIC0zODAsNiArMzgyLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogbV9jbGFzc0lu
Zm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShnbG9iYWxE
YXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSB2b2lkIEpT
Q2VsbDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCisgICAgeworI2lmIEVOQUJMRShHQ19W
QUxJREFUSU9OKQorICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09iamVj
dCgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwor
ICAgICAgICBpZiAoc3RydWN0dXJlKQorI2VuZGlmCisgICAgICAgICAgICBtX3N0cnVjdHVyZS5z
ZXRFYXJseVZhbHVlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSk7CisgICAgICAgIG1fY2xh
c3NJbmZvID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKKyAgICAgICAgLy8gVmVyeSBmaXJzdCBz
ZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2ZSBhIHJlYWwgc3RydWN0dXJlLgorICAgICAgICBB
U1NFUlQobV9zdHJ1Y3R1cmUgfHwgIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKKyAg
ICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCAz
YTA4NTY5NzBjYjQ0YmVhZDAxYjA0Y2RiNzkyODVjNjUyYWExMDZmLi5hZmIyZDk1MDE4ODY3Zjlk
YjdmNDQxZjI4Yzg5M2IxMGUyYTYwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zOSw4ICszOSw5IEBAIFN0cnVjdHVyZUNo
YWluOjpTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogfQogCi1TdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWluKCkKK3Zv
aWQgU3RydWN0dXJlQ2hhaW46OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxT
dHJ1Y3R1cmVDaGFpbio+KGNlbGwpLT5TdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWluKCk7
CiB9CiAKIHZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDI4MWY2MDI0ZTRlNmQ0Yzc5YmIzNTljMGQxN2FjYzUzMTQw
YTQ0MTAuLjAxYTU5YmYxOTcyMTExZDFkMzNmZGJhMTEwNDQxN2IwODQ0MTUyOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNzUsNyAr
NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICB+U3RydWN0dXJlQ2hh
aW4oKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3du
QXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCmluZGV4IGQ0ZjVkODA5ODVkYjdhOTE1
NjQyOTg4M2YwNTNmMjFhMzdiMzIyMTEuLjJiM2Q3OTRhNGQ3ZTAyMjdjZWUwODYwNWU3ZmQ4NjBk
N2I0NDk1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCkBAIC0zODMs
NCArMzgzLDEwIEBAIHdoaWxlICgwKQogI2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KG9iamVjdCwgY2xhc3NJbmZvKSBkbyB7ICh2b2lkKW9iamVjdDsgKHZvaWQpY2xhc3NJbmZvOyB9
IHdoaWxlICgwKQogI2VuZGlmCiAKKyNpZiBDT01QSUxFUihDTEFORykKKyNkZWZpbmUgQVNTRVJU
X0hBU19UUklWSUFMX0RFU1RSVUNUT1Ioa2xhc3MpIENPTVBJTEVfQVNTRVJUKF9faGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcihrbGFzcyksIGtsYXNzIyNfaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcl9jaGVj
aykKKyNlbHNlCisjZGVmaW5lIEFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKGtsYXNzKQor
I2VuZGlmCisKICNlbmRpZiAvKiBXVEZfQXNzZXJ0aW9uc19oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXggOGVhNWQyOTUzMGZkNjgxYzBkZjYyMmY2MDQyNDdi
MjVkNTJlNDM1Yi4uNjgwMGZkZjQ0YWZmMTI3Y2UwMGU2MWI1MjQyODQ0YjkzMDE1YzdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAtNDYsNiArNDYsMTEgQEAg
VXNlck9iamVjdEltcDo6flVzZXJPYmplY3RJbXAoKQogICAgICAgICBmSlNVc2VyT2JqZWN0LT5S
ZWxlYXNlKCk7CiB9CiAKK3ZvaWQgVXNlck9iamVjdEltcDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAganNDYXN0PFVzZXJPYmplY3RJbXAqPihjZWxsKS0+VXNlck9iamVjdEltcDo6flVz
ZXJPYmplY3RJbXAoKTsKK30KKwogQ2FsbFR5cGUgVXNlck9iamVjdEltcDo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgVXNlck9iamVjdEltcCog
dGhpc09iamVjdCA9IGpzQ2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCBkNjQ4YTk1YmI1MjE4YzlmMDk0OTc4Yjg2NWMyZjhj
MWQzZDc1N2VkLi40OWE2NTNlMGMxMzMzM2U1YjNiOTgzYjg1ZTZjMGM4OWYzYjQ5YTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5Vc2Vy
T2JqZWN0SW1wKCk7CisgICAgflVzZXJPYmplY3RJbXAoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKQEAg
LTUzLDEyICs1NCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0
ZSAqZXhlYyk7CisgICAgSlNWYWx1ZSBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqKTsgLy8gVE9E
TzogRmlndXJlIG91dCBob3cgdG8gcmUtdmlydHVhbGl6ZSB0aGlzIHdpdGhvdXQgYnJlYWtpbmcg
dGhlIGZhY3QgdGhhdCB3ZSBkb24ndCBhbGxvdyB2cHRycyBpbiB0aGUgSlNDZWxsIGhpZXJhcmNo
eS4KICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
ICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXBlID0gTm9QcmVmZXJl
bmNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSAqZXhlYykg
Y29uc3Q7CisgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7IC8vIFRPRE86IEZp
Z3VyZSBvdXQgaG93IHRvIHJlLXZpcnR1YWxpemUgdGhpcyB3aXRob3V0IGJyZWFraW5nIHRoZSBm
YWN0IHRoYXQgd2UgZG9uJ3QgYWxsb3cgdnB0cnMgaW4gdGhlIEpTQ2VsbCBoaWVyYXJjaHkuCiAK
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjg0YzNkMmYwMGVhMWNkYTIzYzI3YTBjNmY3MjViZmQ3
NTEzMWVhMy4uMWY0NjEzYTNlZDMyZTQwMDY4MTcxN2ZmYjllMTZhYTYwYWU1ZWU3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTI2NCw3ICsyNjQsNyBAQCBfX1pON1dlYkNvcmUxMkljb25EYXRh
YmFzZTI3Y2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nRXYKIF9fWk43V2ViQ29yZTEySWNvbkRh
dGFiYXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlOXNldENsaWVudEVQTlNf
MThJY29uRGF0YWJhc2VDbGllbnRFCiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZUMxRXYKLV9f
Wk43V2ViQ29yZTEySlNET01XcmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRh
YmxlRXYKK19fWk43V2ViQ29yZTEySlNET01XcmFwcGVyNnNfaW5mb0UKIF9fWk43V2ViQ29yZTEy
UG9wdXBNZW51TWFjQzFFUE5TXzE1UG9wdXBNZW51Q2xpZW50RQogX19aTjdXZWJDb3JlMTJQcmlu
dENvbnRleHQxMnBhZ2VQcm9wZXJ0eUVQTlNfNUZyYW1lRVBLY2kKIF9fWk43V2ViQ29yZTEyUHJp
bnRDb250ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJhbWVFUktOU185RmxvYXRTaXplRQpAQCAt
MTI3Niw2ICsxMjc2LDcgQEAgX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3dG9Ob3Jt
YWxpemVkUmFuZ2VFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE5cm9vdEVkaXRh
YmxlRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMjNpc0NvbnRlbnRS
aWNobHlFZGl0YWJsZUV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uNWlzQWxsRU5T
XzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQorX19aTks3V2ViQ29yZTE3SlNET01HbG9i
YWxPYmplY3QyMnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29yZTE3UmVndWxh
ckV4cHJlc3Npb24xM21hdGNoZWRMZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJl
c3Npb241bWF0Y2hFUktOM1dURjZTdHJpbmdFaVBpCiBfX1pOSzdXZWJDb3JlMTdSZWd1bGFyRXhw
cmVzc2lvbjlzZWFyY2hSZXZFUktOM1dURjZTdHJpbmdFCkBAIC0xNDQwLDcgKzE0NDEsNiBAQCBf
X1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTEwZnJhbWVDb3VudEV2CiBfX1pOSzdXZWJDb3JlOVBhZ2VD
YWNoZTIxYXV0b3JlbGVhc2VkUGFnZUNvdW50RXYKIF9fWk5LN1dlYkNvcmU5VHJlZVNjb3BlMTRn
ZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pUVk43V2ViQ29yZTEyQ2hy
b21lQ2xpZW50RQotX19aVFZON1dlYkNvcmUxMkpTRE9NV3JhcHBlckUKIF9fWlRWTjdXZWJDb3Jl
MTZJY29uRGF0YWJhc2VCYXNlRQogX19aVFZON1dlYkNvcmUxN0ZyYW1lTG9hZGVyQ2xpZW50RQog
X19aVFZON1dlYkNvcmUxOFBsYXRmb3JtU3RyYXRlZ2llc0UKQEAgLTE3MjMsMTIgKzE3MjMsMTMg
QEAgX19aTjdXZWJDb3JlNUZyYW1lMjZzZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudEVpCiAKICNp
ZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VTUykKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFnZXRD
YWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQotX19aTjNKU0MxM1J1bnRpbWVNZXRo
b2QxMnZ0YWJsZUFuY2hvckV2CiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNoQ3JlYXRp
b25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxM1J1bnRp
bWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3Rh
dGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0Mx
M1J1bnRpbWVNZXRob2Q2c19pbmZvRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQ
TlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RGNlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBF
RUUKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kRDJFdgogX19aTjNKU0M4QmluZGluZ3MxMFJvb3RP
YmplY3REMUV2CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDExZ2V0Q2FsbERhdGFF
UE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2Jq
ZWN0MTJkZWZhdWx0VmFsdWVFUEtOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlRQpAQCAtMTc0MCw2ICsxNzQxLDcgQEAgX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNf
OUV4ZWNTdGEKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNf
N0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3Q2c19pbmZvRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Q3ZGVzdHJv
eUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0QzJFUE5TXzlF
eGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlMwXzhJbnN0YW5jZUVFRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3RE
MkV2CiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZTE5Y3JlYXRlUnVudGltZU9iamVjdEVQTlNf
OUV4ZWNTdGF0ZUUKQEAgLTE3NDcsNyArMTc0OSw2IEBAIF9fWk4zSlNDOEJpbmRpbmdzOEluc3Rh
bmNlQzJFTjNXVEYxMFBhc3NSZWZQdHJJTlMwXzEwUm9vdE9iamVjdEVFRQogX19aTjNKU0M4Qmlu
ZGluZ3M4SW5zdGFuY2VEMkV2CiBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXA3aXNWYWxpZEVQ
UzBfCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxNmNyZWF0ZVJvb3RPYmplY3RFUHYK
LV9fWlRWTjNKU0MxM1J1bnRpbWVNZXRob2RFCiAjZW5kaWYKIAogI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXgg
MTc4YjEzMDM2NDQ3MGUwMzhjZTBlMjlhYjg2YTI3OTAwYzEyZjg0Yy4uMTI3NTAyOTIzZDE3OTcz
YjM1NzJiMDljZmNjMWM5MjkyYjI1ZmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cApAQCAtMTU0LDcgKzE1NCw3IEBAIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OndlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIAogdm9pZCBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0V2Via2l0TGluZURhc2goRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIGlmICghaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHZh
bHVlKSkKKyAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IERhc2hBcnJheSBkYXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKaW5kZXggNTliZDlmMjllMTQxNzVmNWViMjBlN2RlYmFjODEyNTNlYjExOTE3Ni4uMmY0
OTk5NGNlZmM2ZDc0MDliNDRkZTllNDQyNzM4NDI0Yjg4ZDEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0zOCw2ICszOCw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQVNTRVJUX0hBU19UUklWSUFM
X0RFU1RSVUNUT1IoRE9NQ29uc3RydWN0b3JPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQpOworCiBjb25zdCBKU0M6Okhhc2hU
YWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBzdGF0aWNUYWJsZSkKIHsKICAgICByZXR1cm4gRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwOjptYXBGb3IoZ2xvYmFsRGF0YSkuZ2V0KHN0YXRpY1RhYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA4YzU3NGQ5ODQ5ZDM2NDIxOTRmMDBiN2I4M2NjMTFhOWJmNGVmYjE1Li4xMjQ2MTdlYjljNWU1
NTMzYjkzZDQ4MDYyMzc3ZjAxNDcyZjU4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00OSw4ICs0OSw5IEBAIEpTRE9NR2xv
YmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0CiB7CiB9CiAKLUpTRE9NR2xvYmFsT2JqZWN0Ojp+SlNET01HbG9iYWxP
YmplY3QoKQordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7
CisgICAganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpTRE9NR2xvYmFsT2JqZWN0
Ojp+SlNET01HbG9iYWxPYmplY3QoKTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtNjUsNiArNjYsMTYgQEAg
dm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0dsb2JhbFRoaXMqIHQKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
fQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGluaGVyaXRzKCZKU0RPTVdpbmRvd0Jh
c2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNl
Kj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoaW5oZXJpdHMoJkpT
V29ya2VyQ29udGV4dEJhc2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3Qg
SlNXb3JrZXJDb250ZXh0QmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggODc1NWZmYjg4MWNmYjg0YWJlYTc0NmZkZDg3YzA4ZTkx
MWFlYTE3ZC4uYWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RydWN0IEpTRE9NR2xvYmFs
T2JqZWN0RGF0YTsKIAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsRGF0
YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBjb25zdCBK
U0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiA9IDApOwotICAgICAgICB2aXJ0dWFsIH5KU0RP
TUdsb2JhbE9iamVjdCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNHbG9i
YWxUaGlzKik7CiAKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIHsgcmV0dXJuIG1fc3RydWN0dXJlczsg
fQogICAgICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSB7IHJldHVybiBt
X2NvbnN0cnVjdG9yczsgfQogCi0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAg
IC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgICAgICBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gdGhpczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZTY4YmNhMWQ2MzJl
NGM5NWMxMDhkNDI2YjRjZjVlMWU5MWVhNTVlYS4uOGRlNDMyZWRmNjE3MDc3ZTdjMGI4OTI5NGZl
ZTE4ZTM0NzVjMzY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCkBAIC02NSw2ICs2NSwxMSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvd1NoZWxsKgog
ICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0
aWNHbG9iYWxzKSk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oY2VsbCktPkpTRE9NV2luZG93
QmFzZTo6fkpTRE9NV2luZG93QmFzZSgpOworfQorCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6dXBk
YXRlRG9jdW1lbnQoKQogewogICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5MWYzZjdhNGQ0
YzZjNmNlNjljNzUzYmI5YzVjMTAwZTE0MWM5ZGFhLi44NGMxODYyNGEyYzgwMmYzMjI1NzVlMjJi
OWRlMThhNWM1OGVkN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaApAQCAtNDAsMTEgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgSlNET01XaW5kb3dCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQ
YXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKICAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTRE9NV2luZG93U2hlbGwqKTsKIAor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHVibGljOgogICAg
ICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKICAgICAgICAgRE9NV2luZG93KiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAK
ICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2luZG93IGZyb20g
dGhlIEpTRE9NV2luZG93U2hlbGwuCiAgICAgICAgIHZvaWQgd2lsbFJlbW92ZUZyb21XaW5kb3dT
aGVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcAppbmRleCAyNWQzODRhYjBkNTQ2MDJkNjQ5M2I4YmFlZTIwOTIzZmMyNDc5Y2NlLi5kOTZm
ODQwZGI2NDBhMjlkZjcxYjMxOTE3OTg1OTRkYjQzYWM1ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTcsOCArNTcsOSBAQCB2
b2lkIEpTRE9NV2luZG93U2hlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUGFzc1JlZlB0cjxET01XaQogICAgIHNldFdpbmRvdyh3aW5kb3cpOwogfQogCi1KU0RP
TVdpbmRvd1NoZWxsOjp+SlNET01XaW5kb3dTaGVsbCgpCit2b2lkIEpTRE9NV2luZG93U2hlbGw6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4o
Y2VsbCktPkpTRE9NV2luZG93U2hlbGw6On5KU0RPTVdpbmRvd1NoZWxsKCk7CiB9CiAKIHZvaWQg
SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5k
b3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5k
ZXggNDNiOTZlMjQyNWY0MmYyZjA0OGE0OGNmMjAwYTgzMWY5Zjg3ZDlhYy4uZDg2NzY2ZDE3YjJj
ZmZkN2M2YTFjYjIyZGI3NDcyMDNhOWUzNmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHR5cGVkZWYgSlNDOjpKU0dsb2JhbFRoaXMgQmFzZTsKICAgICBwdWJs
aWM6CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBKU0M6
OlN0cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwotICAgICAgICB2aXJ0dWFsIH5KU0RPTVdp
bmRvd1NoZWxsKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAg
ICAgICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpT
RE9NV2luZG93Kj4obV91bndyYXBwZWRPYmplY3QuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgc2V0
V2luZG93KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvdyogd2luZG93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKaW5kZXggZDU0
ZmU3NGZhNjdjZmZmYzZlODg3NTQ0OGM0NGQ2ZTk1NTdhYTZhNC4uMDVkYTQwMjQwNWQzNjRiYmNm
OTQ4MjI4NzRhY2U2MDU0YWEzMjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdyYXBwZXIuY3BwCkBAIC0zMiw5ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0RPTVdyYXBwZXI6OnZpcnR1YWxGdW5jdGlv
blRvUHJldmVudFdlYWtWdGFibGUoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNET01XcmFwcGVyKTsKKworY29uc3QgQ2xh
c3NJbmZvIEpTRE9NV3JhcHBlcjo6c19pbmZvID0geyAiSlNET01XcmFwcGVyIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdyYXBwZXIpIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmgKaW5kZXggMzY4NWM4OWU2ODQ4OGYzZTFkODljZWFhMzQ4YzliMWViNDk4ODRlNC4uYWNkNzk2
YTNmYjQ0Yzk3MGM4MzY0ZGVhNzI4OWE4NjI2NTJlNWVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTQyLDE2ICs0MiwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IH0KIAorICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIC8vIEFuIGlubGluZSBmdW5jdGlvbiBjYW5ub3QgYmUgdGhlIGZpcnN0IG5vbi1hYnN0
cmFjdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCi0gICAgLy8gaW4gdGhlIGNsYXNzIGFzIGl0
IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJvbC4K
LSAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZSgpOwot
CiAgICAgZXhwbGljaXQgSlNET01XcmFwcGVyKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgCiAgICAgICAgIDogSlNOb25GaW5hbE9i
amVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4
IDRhMzk2ZTQ1Y2Y3MWMzYzJlNzM3MjU2MmYzNzMxNjE5MDEwNTNkMGMuLjk1NmM5NjE1YTAxZTkz
Njg2YmZlYTkxNTA1MWY2NWJjNjVhNGMwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTSW1hZ2VDb25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU0ltYWdlQ29uc3RydWN0b3IpOwogCi1jb25zdCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yV2l0aERv
Y3VtZW50OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbWFnZUNvbnN0cnVj
dG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
SW1hZ2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNJbWFnZUNvbnN0cnVjdG9yKSB9OwogCiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VD
b25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAK
aW5kZXggNWFmN2UzN2IyN2Y5N2M0YzMzOGUwNDMyNGI2NjExN2ZhMTdhMzk5Mi4uNjFjMTVkNmI5
NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xODgsOCArMTg4LDEwIEBAIEpTVmFsdWUgSlNO
b2RlOjphcHBlbmRDaGlsZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzTnVsbCgpOwog
fQogCi1TY29wZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqIG5vZGUpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNOb2Rl
OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
bm9kZSkgY29uc3QKIHsKKyAgICBpZiAoaW5oZXJpdHMoJkpTSFRNTEVsZW1lbnQ6OnNfaW5mbykp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNIVE1MRWxlbWVudCo+KHRoaXMpLT5wdXNo
RXZlbnRIYW5kbGVyU2NvcGUoZXhlYywgbm9kZSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRl
eCA0OWE4MjhjYzg4NTVhZDVkMzM5ZTRhMzdjMDg2NTUwOWYxNDkzMzc2Li43NzdlNWI4MWUzNzE3
YzFjMWYxN2JjZjViMDMyM2JjMzNkMDI3YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNX
ZWJTb2NrZXQoRXhlY1N0CiAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIGVj
KTsKICAgICBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b2NvbHNWYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHBy
b3RvY29sc1ZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KHByb3RvY29sc1ZhbHVlKSkg
ewogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwogICAgICAgICAgICAgSlNB
cnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5KHByb3RvY29sc1ZhbHVlKTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbHNBcnJheS0+bGVuZ3RoKCk7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmNwcAppbmRleCA5MmI3OWY0MzU3OGU1OTYyYTg3M2I3NjdjYzU3ZGEyMTM2ZjY4MDdhLi5l
NzljNmU0YmQ0MzIxZTVjMDc3ZjA4NzhlZmY0NTI4YWZkYTU5NWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcApAQCAtNjAsOCAr
NjAsOSBAQCB2b2lkIEpTV29ya2VyQ29udGV4dEJhc2U6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1K
U1dvcmtlckNvbnRleHRCYXNlOjp+SlNXb3JrZXJDb250ZXh0QmFzZSgpCit2b2lkIEpTV29ya2Vy
Q29udGV4dEJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU1dvcmtl
ckNvbnRleHRCYXNlKj4oY2VsbCktPkpTV29ya2VyQ29udGV4dEJhc2U6On5KU1dvcmtlckNvbnRl
eHRCYXNlKCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2VyQ29udGV4dEJh
c2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCmluZGV4IGQ4MTcxYzE1N2VlZGJlOTll
ZjcyOTcwNTI2ZThjNzQyNWRjNWVmZDUuLmFiY2JlYjY1ODMyNDQ5MDUxYTM5ODVlYWFjNmMxY2Y0
YTQyODU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRCYXNlLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgSlNXb3JrZXJDb250ZXh0QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiAg
ICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHZpcnR1YWwgfkpTV29ya2VyQ29udGV4dEJhc2UoKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNz
SW5mbyBzX2luZm87CiAKICAgICAgICAgV29ya2VyQ29udGV4dCogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbC5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFZhbHVlLmNwcAppbmRleCBjYjg2YjI5YjU4YjA0ZTA5ZjE2NGI0ZmFhNDZhMjA1NjMwMGZiMTlm
Li5iZmE5M2FhODcwN2IwOWE5ZTNiNGI2MzEzN2EyYmQzZThlNjMyZjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUsIEoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3Jl
YXRlKFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KICAgICBpZiAo
dmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBpZiAoaXNKU0FycmF5KCZzY3JpcHRTdGF0ZS0+
Z2xvYmFsRGF0YSgpLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkpIHsK
ICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBJbnNw
ZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJy
YXkodmFsdWUpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggYjY3NWNhMzEzMmRjMTQ5MDRjODBiZWJiYTEyMDlkYmQ1NzM4NDYxMy4u
YTU2YThkYzlmYThmOWM0OTFhMGM1NzkzODU3YWZjYWU3OGM5MDZmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0z
MTAsNyArMzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QodmFsdWUpOwotICAgICAgICByZXR1cm4gaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERh
dGEoKSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pOworICAg
ICAgICByZXR1cm4gaXNKU0FycmF5KG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJh
eTo6c19pbmZvKTsKICAgICB9CiAKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmpl
Y3QqIG9iamVjdCkKQEAgLTM1Nyw3ICszNTcsNyBAQCBwcml2YXRlOgogICAgIEpTVmFsdWUgZ2V0
U3BhcnNlSW5kZXgoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgYm9vbCYg
aGFzSW5kZXgpCiAgICAgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhcnJheSk7Ci0gICAg
ICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkpIHsKKyAgICAg
ICAgaWYgKGlzSlNBcnJheShhcnJheSkpIHsKICAgICAgICAgICAgIGlmIChKU0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
IHsKICAgICAgICAgICAgICAgICBoYXNJbmRleCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHNsb3QuZ2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2VkMmIx
ZmQ5ZDU4OTQ2Y2VhODAzYzM4NzliYjYyODJjYTMxMGQ3Li41ZDRiYjYwNTFhYWNlN2NkYWUzNzdj
NTRhYmJjYTQ2NmY0ODRiNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKIAogICAgICMg
Q3VzdG9tIHB1c2hFdmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNoRXZlbnRIYW5kbGVy
U2NvcGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikgY29uc3Q7XG5cbiIp
IGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhhbmRs
ZXJTY29wZSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpTY29wZUNoYWlu
Tm9kZSogcHVzaEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTY29wZUNo
YWluTm9kZSopIGNvbnN0O1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNhbGwgZnVu
Y3Rpb25zCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwpAQCAtODYxLDcgKzg2
MSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8g
cmV0dXJuIGZhbHNlIGZvciBvYmplY3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCcuCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZp
cnR1YWwgYm9vbCB0b0Jvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCJ9ID0gMTsKICAgICB9CiAKQEAgLTEzNjksNyArMTM2OCwxMCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG51c2luZyBuYW1lc3Bh
Y2UgSlNDO1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm5hbWVzcGFjZSBXZWJDb3Jl
IHtcblxuIik7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIkFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoJGNsYXNzTmFtZSk7XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTCgkY2xhc3NOYW1lKTtcbiIpOworICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJBU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUigkY2xhc3NOYW1lKTtcblxuIik7CisgICAgfQogCiAgICAg
bXkgJG51bUF0dHJpYnV0ZXMgPSBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUoJG9iamVjdCwg
JGRhdGFOb2RlKTsKIApAQCAtMTUwMSw5ICsxNTAzLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+
Z2xvYmFsRGF0YSgpLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUpO1xuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwiJHt2
aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2lu
Zm8sIDAsIGdldCR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBc
IiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgMCwgZ2V0JHtj
bGFzc05hbWV9UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtjbGFzc05hbWV9
UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsg
XCIke3Zpc2libGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6
OnNfaW5mbywgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0g
eyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgJiR7Y2xh
c3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xhc3NOYW1l
fVByb3RvdHlwZSkgfTtcblxuIik7CiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAi
RE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJD
b250ZXh0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFz
c05hbWV9UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdClcbiIpOwpAQCAtMTUxMSw2ICsxNTEzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KKwogICAgIGlmICgkbnVtQ29uc3Rh
bnRzID4gMCB8fCAkbnVtRnVuY3Rpb25zID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEZWxlZ2F0aW5nUHJvdG90eXBlR2V0T3duUHJvcGVydHlTbG90In0pIHsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMTU3MSw3ICsxNTc0LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAg
IH0KIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICRjbGFzc05hbWUi
IC4gIjo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1cIiwgJiIgLiAkcGFyZW50Q2xh
c3NOYW1lIC4gIjo6c19pbmZvLCAiKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENs
YXNzSW5mbyAkY2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9
XCIsICZCYXNlOjpzX2luZm8sICIpOwogCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCAmJiAh
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9TdGF0aWNUYWJsZXMifSkgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiYke2NsYXNzTmFtZX1UYWJsZSIpOwpAQCAtMTYyMSw3
ICsxNjI0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsKICAgICAgICAgaWYgKElzVHlwZWRBcnJh
eVR5cGUoJGltcGxUeXBlKSBhbmQgKCRpbXBsVHlwZSBuZSAiQXJyYXlCdWZmZXJWaWV3IikgYW5k
ICgkaW1wbFR5cGUgbmUgIkFycmF5QnVmZmVyIikpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yIGRlc2NyaXB0b3IodnB0cigpLCBPQkpF
Q1RfT0ZGU0VUT0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBPQkpFQ1RfT0ZGU0VUT0YoJHtj
bGFzc05hbWV9LCBtX3N0b3JhZ2VMZW5ndGgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcigmJHtjbGFzc05h
bWV9OjpzX2luZm8sIE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZSksIE9C
SkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZUxlbmd0aCkpO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBnbG9iYWxEYXRhLnJlZ2lzdGVyVHlwZWRB
cnJheURlc2NyaXB0b3IoaW1wbCgpLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fc3RvcmFnZUxlbmd0aCA9IGltcGwo
KS0+bGVuZ3RoKCk7XG4iKTsKQEAgLTMzODgsMTMgKzMzOTEsMTUgQEAgc3ViIEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9uCiAgICAgbXkgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVycyA9
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9
OwogCiAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06
OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9Q29uc3RydWN0b3JcIiwgJkRPTUNvbnN0
cnVjdG9yT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVj
dG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29u
c3QgQ2xhc3NJbmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNp
YmxlQ2xhc3NOYW1lfUNvbnN0cnVjdG9yXCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OiR7Y29uc3RydWN0b3JD
bGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IERPTUNvbnN0
cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ9XG5cbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNv
bnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7dmlz
aWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5m
bywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0pO1xuXG4iKTsKKworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFzc0lu
Zm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05h
bWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNfaW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9
VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xu
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OiR7Y29uc3RydWN0b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCmluZGV4IDQwMjM4M2U4ODM4OTczMmRiMmNlNjhk
NjJkNDYwM2MxNGJmOGJjOGUuLjZkYzE3ZmYyMmE1NTI2ZDgyNGYzNjlhZDU0Nzk4MTVmM2IxNjI3
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTQ4
LDEwICs0OCw2IEBAIHZvaWQgQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0K
IAotQ1J1bnRpbWVPYmplY3Q6On5DUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIENJbnN0YW5jZSog
Q1J1bnRpbWVPYmplY3Q6OmdldEludGVybmFsQ0luc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q0luc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCmluZGV4IGJlZWRkYmIyODMyY2M0YTFh
ZWZmY2EyMDgzMDYzNjc4ODNkNDgyNTcuLjZiYzExZmUwYjAyZDI1NGI2YjBlOWJkMDExY2VhYmE3
NjE5NzFkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaApAQCAt
NTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+Q1J1bnRpbWVPYmplY3QoKTsKLQogICAgIENJbnN0YW5jZSogZ2V0SW50ZXJu
YWxDSW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmpl
Y3QuY3BwCmluZGV4IDlkNTE3ZTM5ODA5ODkwNzRhNThhZDQwMGQ3MjQ0OWUyOGMyYjEzMDIuLjg0
YTNlZjMxOWFiN2ZhZjVmODVlZDlkYTYwMGMwMDFkOWEwYTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAKQEAgLTQ2LDEw
ICs0Niw2IEBAIHZvaWQgSmF2YVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0K
IAotSmF2YVJ1bnRpbWVPYmplY3Q6On5KYXZhUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIEphdmFJ
bnN0YW5jZSogSmF2YVJ1bnRpbWVPYmplY3Q6OmdldEludGVybmFsSmF2YUluc3RhbmNlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SmF2YUluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVu
dGltZU9iamVjdC5oCmluZGV4IGViZWRkNzY2ZjNjZDlkZjUxYjg1N2U5N2ZiZDEzMmU0OTgzZTBm
NGMuLjg0OWEwMDc3ZWI2ZmMyZWExNTljM2JiMDFhMDhmNjFhMGZlY2JjMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaApAQCAtNDgs
OCArNDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+SmF2YVJ1bnRpbWVPYmplY3QoKTsKLQogICAgIEphdmFJbnN0YW5jZSogZ2V0SW50
ZXJuYWxKYXZhSW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRp
bWVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0
LmgKaW5kZXggMmRhYmZjNDBjMTdkNTc2ZTM5MDk5ZGYyNDkzOGE3ZTlhZTRmYjAyYy4uMGQ4ODUx
ZTFkNWQ4YzI2YmY3NTkwMDQwNjJjNjNhYzQ0M2Y4NTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5PYmpDUnVu
dGltZU9iamVjdCgpOwotCiAgICAgT2JqY0luc3RhbmNlKiBnZXRJbnRlcm5hbE9iakNJbnN0YW5j
ZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCmluZGV4IGI5MjRm
YWQzM2M4Y2NkMTBlODQ1MjJiNjE2NjhiYTAzZGFlZjU0ZTYuLjdiYjE3NmM2YmZmNWY1NDM3MDI2
OTUyZWYzYzk5YTdjYWJmNWUwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L09iakNSdW50aW1lT2JqZWN0Lm1tCkBAIC00NiwxMCArNDYsNiBAQCB2b2lkIE9iakNSdW50aW1l
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLU9iakNSdW50aW1lT2JqZWN0Ojp+T2Jq
Q1J1bnRpbWVPYmplY3QoKQotewotfQotCiBPYmpjSW5zdGFuY2UqIE9iakNSdW50aW1lT2JqZWN0
OjpnZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE9iamNJbnN0YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IGU3MjBlZjYwNjc2NGJkOGJiZGNmMmMx
YWYzZGE1NjQ1MTcyYWRmZDYuLjYwMjU1OTQ1MGE1MGI0ZmMzNDdjODhlODY3MjlkM2ZmNDQ1MDg4
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMjIs
NiArMTIyLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIE9iamNGYWxsYmFja09iamVj
dEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCi0gICAgdmly
dHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBib29sIHRvQm9vbGVh
bihFeGVjU3RhdGUqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBi
ZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5l
ZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKICAgICBSZWZQdHI8T2JqY0lu
c3RhbmNlPiBfaW5zdGFuY2U7CiAgICAgSWRlbnRpZmllciBfaXRlbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA1NTliOTAyMzdmZDAwNWQ3MWU0MDJm
ZDQ3MTI1NDA3ZmQxOGY2NDNjLi43MmZlZGM3NDVhZmM0MTM0OTcxMzIwNmUzMmM0Y2QxNjAxMWQ4
MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0x
OTksNiArMTk5LDExIEBAIE9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0
SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjCiB7CiB9CiAKK3ZvaWQgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2VsbCktPk9iamNGYWxsYmFja09iamVjdEltcDo6fk9i
amNGYWxsYmFja09iamVjdEltcCgpOworfQorCiB2b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKaW5kZXggYTliN2ZhNzM3ZWVlY2ExODhmMjc5OTFh
NGJmZjQyNmJjZTE4OWQyMy4uNmIyNzVlMjQxZjM5Mzk4ZjFlOGQwZDQ2MDY0ZmJjZWU3ZWU2ZDNj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtOTgwLDYgKzk4
MCwxMSBAQCBRdFJ1bnRpbWVNZXRob2Q6On5RdFJ1bnRpbWVNZXRob2QoKQogICAgIGRlbGV0ZSBk
X3B0cjsKIH0KIAordm9pZCBRdFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIGpzQ2FzdDxRdFJ1bnRpbWVNZXRob2QqPihjZWxsKS0+UXRSdW50aW1lTWV0aG9kOjp+
UXRSdW50aW1lTWV0aG9kKCk7Cit9CisKIC8vID09PT09PT09PT09PT09PQogCiBRdFJ1bnRpbWVN
ZXRob2REYXRhOjp+UXRSdW50aW1lTWV0aG9kRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaAppbmRleCA2MjljNzk2OTg4ZjVjNWVlODFjYzM5YjA4Y2QwNjQ1OTcwZWU5ZjY4
Li40MDY5OTdmMzRhNjMxZDY2NmY0MDVlYjg1MjlmMzYzMGZiY2QxM2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsOCBAQCBjbGFzcyBRdFJ1bnRp
bWVNZXRob2QgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICB2aXJ0dWFsIH5RdFJ1bnRpbWVNZXRob2Qo
KTsKKyAgICB+UXRSdW50aW1lTWV0aG9kKCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggZGUzYWMwYjgxNTA5NTAyNzMyMWViNzE1
Y2YzYzJjYzNmYWExYjhhYi4uN2RlZDY3MzA3ODBkZmZlNjk4MmYwZGZkZjMzYTg4ZmZlZDU0OThi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNTQsNiArNTQs
MTEgQEAgUnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCkKICAgICBkZWxldGUgZ2V0Q29uY3Jl
dGVBcnJheSgpOwogfQogCit2b2lkIFJ1bnRpbWVBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpLT5SdW50aW1lQXJyYXk6On5SdW50
aW1lQXJyYXkoKTsKK30KKwogSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBSdW50
aW1lQXJyYXkqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihhc09iamVjdChz
bG90QmFzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggNzg2MGQz
MTcyYWE0OGEzOWQzZTk0NDEwZTZjOTM0NDQzMTk4MDNlNy4uNTUzMGNiMzQ3MzdmNzAzYzk0YzZj
NWM3ZWIyMDRkMWQxM2Q3NzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5o
CkBAIC00Nyw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0eXBlZGVmIEJpbmRpbmdz
OjpBcnJheSBCaW5kaW5nc0FycmF5OwotICAgIHZpcnR1YWwgflJ1bnRpbWVBcnJheSgpOworICAg
IH5SdW50aW1lQXJyYXkoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAK
aW5kZXggOWFhM2U0ZmJjOTgzOWFkZjY3Yzg4YWRiMzYyMWE2MWM5NTc0NWQ2YS4uNmI4NjIzMTVm
OTBhZjk2NzQwMWM3Y2UxMDUzNWQzOWNjNmQ4NzQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuY3BwCkBAIC01MCw4ICs1MCw5IEBAIFJ1bnRpbWVNZXRob2Q6OlJ1bnRp
bWVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsCiB7CiB9CiAKLXZvaWQgUnVudGltZU1ldGhvZDo6dnRhYmxlQW5jaG9yKCkKK3ZvaWQgUnVu
dGltZU1ldGhvZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PFJ1bnRpbWVN
ZXRob2QqPihjZWxsKS0+UnVudGltZU1ldGhvZDo6flJ1bnRpbWVNZXRob2QoKTsKIH0KIAogdm9p
ZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuaAppbmRleCA0MGVkYTEzNDFkYWVlZTEyNjBlNTAyYTgxZDczODNjNjZhYjYzMjZhLi5mNzk1
NWExMjIzMTlmYjYzNWUyYjY4ZDUxM2RjNWE1MjhhZjI1OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBSdW50aW1lTWV0aG9k
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJu
YWxGdW5jdGlvbiBCYXNlOwogCi0gICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOworICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgUnVudGltZU1ldGhv
ZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpN
ZXRob2RMaXN0JiBtZXRob2RMaXN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCmluZGV4IDRhYmJjOGVhZTFmMjNmZTZiZjE3ZDNhOTA0MzkwMDMyNjhiMTI5
YzMuLjdlYzA4N2QzNTY0ZDU5Nzg5NjlhMzBjZWMxNzYxNDA3NDU2MzRiNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtNDksOSArNDksMTEgQEAgdm9pZCBS
dW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLVJ1bnRpbWVPYmplY3Q6On5S
dW50aW1lT2JqZWN0KCkKK3ZvaWQgUnVudGltZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CiB7Ci0gICAgQVNTRVJUKCFtX2luc3RhbmNlKTsKKyAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlQoIXRoaXNPYmpl
Y3QtPm1faW5zdGFuY2UpOworICAgIHRoaXNPYmplY3QtPlJ1bnRpbWVPYmplY3Q6On5SdW50aW1l
T2JqZWN0KCk7CiB9CiAKIHZvaWQgUnVudGltZU9iamVjdDo6aW52YWxpZGF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4IDA1MDQzMzZlYjhhZjUzNWQyZWJkYzE2
NDllZGQwYTNiNTY1NzM4OTIuLjY0MzcxNTE4YmI3NGU3YjMyMDY2M2YxNzQ5MTdkNGYzYjU4YmE0
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5SdW50aW1lT2JqZWN0KCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVj
dC5oCmluZGV4IGMxNjQ2ODA0YjJlYjhmMDUyMDhkNTFmNzU1OWJlOTU5MWNjMTg0ZTIuLjgzNGY5
YjhhZDMwYzkxYWEyN2NjYmNmYmExMDljNGZkNTE3NmM1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCkBAIC00OSw4
ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5Qcm94eVJ1bnRpbWVPYmplY3QoKTsKLQogICAgIFByb3h5SW5zdGFuY2UqIGdldElu
dGVybmFsUHJveHlJbnN0YW5jZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVj
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVj
dC5tbQppbmRleCBmNTMxOTI0OWNiOGNmZWZiZTA1MmMzMTU1ZDFjOWIwNmRkYjQ3MzU5Li5jMjdl
NzI4Y2RlZjdjNGE4YTRkOGM5YjVjOTQ0ZWJjZmVlZDU3MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCkBAIC00
NywxMCArNDcsNiBAQCB2b2lkIFByb3h5UnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwogfQogCi1Qcm94eVJ1bnRpbWVPYmplY3Q6On5Qcm94eVJ1bnRpbWVPYmplY3QoKQotewotfQot
CiBQcm94eUluc3RhbmNlKiBQcm94eVJ1bnRpbWVPYmplY3Q6OmdldEludGVybmFsUHJveHlJbnN0
YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5SW5zdGFuY2UqPihn
ZXRJbnRlcm5hbEluc3RhbmNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCmluZGV4IGQzZDEwMGE4NDk1
ZGQwYzkzMmUzY2I4MmZlZmUzN2Q1ZTcwNGI1YWUuLjg5ODE0NzEzNTdiMmFlNWI2YmVjZDBkNjYx
Y2I0MDg4NDllOTY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKQEAgLTM5LDYgKzM5LDggQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBU1NFUlRfSEFT
X1RSSVZJQUxfREVTVFJVQ1RPUihKU05QTWV0aG9kKTsKKwogY29uc3QgQ2xhc3NJbmZvIEpTTlBN
ZXRob2Q6OnNfaW5mbyA9IHsgIk5QTWV0aG9kIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05QTWV0aG9kKSB9OwogCiBKU05QTWV0aG9kOjpK
U05QTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGEy
ZmQyMjZkZWRkZTJlZDk4ODU5ZGUyYjA4ZTE1OGY5MGYyY2RlYjYuLmFhNTZhMzc1Mjc2NzVlOTQ1
ZmZiMGJjYzU1NWY1MGNkNTI1Y2JjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTc0LDYgKzc0
LDExIEBAIEpTTlBPYmplY3Q6On5KU05QT2JqZWN0KCkKICAgICBBU1NFUlQoIW1fbnBPYmplY3Qp
OwogfQogCit2b2lkIEpTTlBPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpz
Q2FzdDxKU05QT2JqZWN0Kj4oY2VsbCktPkpTTlBPYmplY3Q6On5KU05QT2JqZWN0KCk7Cit9CisK
IHZvaWQgSlNOUE9iamVjdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fbnBPYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmgKaW5kZXggNGI5YWQ3Y2FkMTkzNDllMjhmN2VkNzEyOTczYWQ1Nzg4MzNm
NDU1Zi4uN2YyNmYwZDY3MzZiYjZkYjJmMzIzZGYyYjA3ZjlmMDIyZDUzMWI0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB+SlNOUE9iamVj
dCgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICB2b2lkIGludmFs
aWRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGI0NmYxNTliYThkYWM0YzY5ZmVi
MDYxYjIzODk2ODE4N2NmZjZjODAuLjU5ZTEyMTdjMjhiOTcyYzdjMDQxMjM0YzhhMWI1MTUxOWNm
ZmRhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE2OCw2ICsxNjgsOCBAQCBFWFBPUlRT
CiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAg
ICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBA
U0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9O
QFoKICAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKKyAg
ICAgICAgP3NfaW5mb0BKU0RPTVdyYXBwZXJAV2ViQ29yZUBAMlVDbGFzc0luZm9ASlNDQEBCCisg
ICAgICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVA
QFFCRVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Nyb2xsRWxlbWVu
dFRvUmVjdEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJA
QFoKICAgICAgICAgP3NldFNob3VsZExheW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVA
RnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2Vi
Q29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCkBAIC0xODksNCArMTkxLDMgQEAgRVhQT1JU
UwogICAgICAgICA/dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBA
WgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZG
cmFtZVZpZXdAMkBYWgotICAgICAgICA/dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJs
ZUBKU0RPTVdyYXBwZXJAV2ViQ29yZUBATUFFWFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKaW5kZXggZTU3ZGNkYjg2ZjZkYTk4MGQ1MGM0ZTFiMGQ2Yzg2NTlhNDQyYzUzYy4uZjBi
ZjE4YjExYWNlMjdmZjQxMjhkODdiOGVhZjBjZDFkOWIzNzI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTgyLDQgKzE4MiwzIEBAIEVYUE9SVFMKICAgICAgICAgP3Rv
UmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3Vw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoK
LSAgICAgICAgP3ZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVASlNET01XcmFwcGVy
QFdlYkNvcmVAQE1BRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNDBjYjc4YmI1M2Zl
NDQ5NjIwNmJhMGYzYTE0OTk5OGI1ZjlkZDc3OC4uZWNiZGZkNzM2ZjZlZTM3NzhkN2UxYTI1ZWEx
MzNmNjZjYjYwNmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC00MSw3ICs0MSw2IEBA
IF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFdjsKIF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFF
UktOU183SW50UmVjdEU7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQxN3RvR2VuZXJhdGVkU3Ry
ZWFtRXY7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKLV9aTjdXZWJDb3Jl
MTJKU0RPTVdyYXBwZXIzNHZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKIF9a
TjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183
RWxlbWVudEVpaWI7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUmpTNl87CiBfWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1l
bnRFUEtOU181UmFuZ2VFUm1TNl87CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggOGZjYWU4OGNmMzk4NDQxZjU5ZmE3MDc1ZTM5Y2JiNjc3MjQxZDFhYS4uNDVlNTBlMDdi
YTA5N2E1ZWM3YWNmZjdiZWM5ZmU2NWZkZTMwY2Y4ZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTEyLTEzICBNYXJrIEhhaG5lbmJl
cmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0
cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IFJlbW92ZWQgc3ltYm9sIG5vIGxvbmdl
ciBwcmVzZW50LgorCiAyMDExLTEyLTEzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVz
dGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEdldCByaWQgb2YgbGF5ZXJpbmcgdmlvbGF0
aW9ucyBpbiBpbmNsdWRlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119263</attachid>
            <date>2011-12-14 11:28:56 -0800</date>
            <delta_ts>2011-12-14 16:11:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74331-20111214112854.patch</filename>
            <type>text/plain</type>
            <size>310056</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWU2MjYxZWYzMDBiYjc0MDRjZjI0ZWQzNTI4Y2UwZTExZjY5MGE3Li44MDdhODM4NWY1ZmFhZTRh
MDk4ODRmMzVmZmI1YTg0NDI1YjBmNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjIgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZWdhcGF0Y2gg
d2hpY2ggZnJlZXMgdXMgZnJvbSB0aGUgY2hhaW5zIG9mIHZpcnR1YWwgZGVzdHJ1Y3RvcnMuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3JzLCB3aGlj
aCBhcmUgdGhlIGxhc3Qgb2YgdGhlIHZpcnR1YWwgCisgICAgICAgIGZ1bmN0aW9ucywgZnJvbSB0
aGUgSlNDZWxsIGhpZXJhcmNoeSwgd2UgbmVlZCB0byBhZGQgdGhlIENsYXNzSW5mbyBwb2ludGVy
IHRvIAorICAgICAgICB0aGUgY2VsbCByYXRoZXIgdGhhbiB0byB0aGUgc3RydWN0dXJlIGJlY2F1
c2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBsYXppbHkgY2FsbCAKKyAgICAgICAgdGhlIHN0YXRp
YyBkZXN0cm95KCkgZnVuY3Rpb25zIHRoYXQgd2lsbCByZXBsYWNlIHRoZSB2aXJ0dWFsIGRlc3Ry
dWN0b3JzLCB3ZSAKKyAgICAgICAgbmVlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgQ2xhc3NJ
bmZvIHdpdGhvdXQgdGhlIGRhbmdlciBvZiB0aGUgb2JqZWN0J3MgCisgICAgICAgIFN0cnVjdHVy
ZSBiZWluZyBjb2xsZWN0ZWQgYmVmb3JlIHRoZSBvYmplY3QgaXRzZWxmLgorCisgICAgICAgIEFm
dGVyIGFkZGluZyB0aGUgQ2xhc3NJbmZvIHRvIHRoZSBjZWxsLCB3ZSBjYW4gdGhlbiBiZWdpbiB0
byByZW1vdmUgb3VyIHVzZSAKKyAgICAgICAgb2YgdnB0cnMgZm9yIG9wdGltaXphdGlvbnMgd2l0
aGluIHRoZSBKSVQgYW5kIHRoZSBHQy4gIFdoZW4gd2UgaGF2ZSByZW1vdmVkIAorICAgICAgICBh
bGwgb2YgdGhlIHN0b3JlZCB2cHRycyBmcm9tIEpTR2xvYmFsRGF0YSwgd2UgY2FuIHRoZW4gYWxz
byByZW1vdmUgYWxsIG9mIAorICAgICAgICB0aGUgcmVsYXRlZCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisKKyAgICAgICAgVGhlIHJlcGxhY2VtZW50IGZvciB2aXJ0dWFsIGRlc3RydWN0b3JzIHdp
bGwgYmUgdG8gYWRkIGEgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gCisgICAgICAgIHBvaW50ZXIg
dG8gdGhlIE1ldGhvZFRhYmxlIHN0b3JlZCBpbiBDbGFzc0luZm8uICBBbnkgc3ViY2xhc3Mgb2Yg
SlNDZWxsIHRoYXQgaGFzIAorICAgICAgICBhIG5vbi10cml2aWFsIGRlc3RydWN0b3Igd2lsbCBy
ZXF1aXJlIGl0cyBvd24gc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gdG8gc3RhdGljIAorICAgICAg
ICBjYWxsIGl0cyBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3IsIHdoaWNoIHdpbGwgbm93IGJlIG5v
bi12aXJ0dWFsLiAgSW4gZnV0dXJlIAorICAgICAgICBwYXRjaGVzIHdlIHdpbGwgc2xvd2x5IG1v
dmUgYXdheSBmcm9tIGRlc3RydWN0b3JzIGFsdG9nZXRoZXIgYXMgd2UgbWFrZSBtb3JlIGFuZCAK
KyAgICAgICAgbW9yZSBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnkgcmF0aGVyIHRoYW4gbWFs
bG9jLWVkIG1lbW9yeS4gIFRoZSBHQyB3aWxsIG5vdyAKKyAgICAgICAgY2FsbCB0aGUgc3RhdGlj
IGRlc3Ryb3kgbWV0aG9kIHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAg
ICAgICAgQXMgd2UgZ28gdGhyb3VnaCB0aGUgaGllcmFyY2h5IGFuZCBhZGQgc3RhdGljIGRlc3Ry
b3kgZnVuY3Rpb25zIHRvIGNsYXNzZXMsIAorICAgICAgICB3ZSB3aWxsIGFsc28gYWRkIGEgbmV3
IGFzc2VydCwgQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IsIHRvIHRob3NlIGNsYXNzZXMg
CisgICAgICAgIHRvIHdoaWNoIGl0IGFwcGxpZXMuICBUaGUgZnV0dXJlIGdvYWwgaXMgdG8gZXZl
bnR1YWxseSBoYXZlIGV2ZXJ5IGNsYXNzIGhhdmUgdGhhdCBhc3NlcnQuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Nv
bnN0cnVjdG9yOjpkZXN0cm95KTogQWRkIGEgZGVzdHJveSBmdW5jdGlvbiB0byBzdGF0aWNhbGx5
IGNhbGwgCisgICAgICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IgYmVjYXVzZSBpdCBoYXMgc29t
ZSBleHRyYSBkZXN0cnVjdGlvbiBsb2dpYy4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6IEFkZCB0cml2
aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBKU0NhbGxiYWNrRnVuY3Rpb24uCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOiBBZGQgYSBkZXN0cm95IGZ1bmN0aW9uIHRvIHN0YXRp
Y2FsbHkgY2FsbCB+SlNDYWxsYmFja09iamVjdCAKKyAgICAgICAgYmVjYXVzZSBpdCBoYXMgYSBt
ZW1iZXIgT3duUHRyIHRoYXQgbmVlZHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChKU0M6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6IEFkZC9yZW1vdmUgbmVjZXNzYXJ5IHN5bWJvbHMgZm9yIEpTQy4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmOiBTYW1lIGZvciBXaW5kb3dzIHN5bWJvbHMuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcDogRGVidWdnZXJBY3RpdmF0aW9uLCBmb3Igc29tZSBzdHJhbmdl
IHJlYXNvbiwgZGlkbid0IAorICAgICAgICBoYXZlIGl0cyBvd24gQ2xhc3NJbmZvIGRlc3BpdGUg
dGhlIGZhY3QgdGhhdCBpdCBvdmVycmlkZXMgYSBudW1iZXIgb2YgTWV0aG9kVGFibGUgCisgICAg
ICAgIG1ldGhvZHMuICBBZGRlZCB0aGUgQ2xhc3NJbmZvLCBhbG9uZyB3aXRoIGFuIGFzc2VydGlv
biB0aGF0IGl0cyBkZXN0cnVjdG9yIGlzIHRyaXZpYWwuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOiBSZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJndW1lbnQgdG8gaXNKU0FycmF5LCBpc0pTQnl0ZUFycmF5
LCAKKyAgICAgICAgaXNKU1N0cmluZywgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3Bw
OiAgRGl0dG8uICBBbHNvIHJlbW92ZSB1c2VzIG9mIGpzQXJyYXlWUHRyIGluIGZhdm9yIG9mIHVz
aW5nIHRoZSAKKyAgICAgICAgSlNBcnJheSBDbGFzc0luZm8gcG9pbnRlci4KKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6ICBSZXBsYWNlIHVzZXMgb2YgdGhlIG9sZCB2cHRycyB3aXRoIG5ldyBDbGFzc0luZm8g
CisgICAgICAgIGNvbXBhcmlzb25zIHNpbmNlIHdlIGRvbid0IGhhdmUgdnB0cnMgYW55bW9yZS4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6IFJlbW92ZSBhbGwgdXNlcyBvZiB2cHRycyBpbiBHQyBvcHRpbWl6YXRpb25zIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCAKKyAgICAgICAgQ2xhc3NJbmZvIGNvbXBhcmlzb25zLgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFp
bik6CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IERpdHRvLgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOiBEaXR0by4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9y
Lmg6IERpdHRvLgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IpOgorICAg
ICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uY3BwOiBOb3cgdGhhdCB3ZSBkb24ndCBoYXZlIHZw
dHJzLCB3ZSBjYW4ndCBjb3VudCB0aGVtLiAgCisgICAgICAgIFdlJ2xsIGhhdmUgdG8gcmVuYW1l
IHRoaXMgY2xhc3MgYW5kIG1ha2UgaXQgdXNlIENsYXNzSW5mbyBwdHJzIGluIGEgZnV0dXJlIHBh
dGNoLgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6Y291bnQpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDogUmVtb3ZlIGFsbCBnbG9iYWwgZGF0YSBhcmd1bWVu
dHMgZnJvbSBpc0pTQXJyYXksIAorICAgICAgICBldGMuIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpT
Qzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6IFJlbW92ZSB2cHRyIGFyZ3VtZW50IGZyb20gZW1pdEFsbG9jYXRlQmFz
aWNKU09iamVjdCAKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOiBSZW1vdmUgdnB0
ciBwbGFudGluZywgYW5kIGFkZCBDbGFzc0luZm8gcGxhbnRpbmcsIAorICAgICAgICByZW1vdmUg
YWxsIHZ0YWJsZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgYnJhbmNoIGNvZGUgd2l0aCBjb3Jy
ZXNwb25kaW5nIENsYXNzSW5mby4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmlt
aXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9l
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6IFJlbW92ZSBnbG9iYWwgZGF0YSBhcmd1bWVudCBm
cm9tIGlzSlNTdHJpbmcsIGV0Yy4KKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICog
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgc3R1ZmYgd2l0
aCBDbGFzc0luZm8gc3R1ZmYuCisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6Omxv
YWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDogUmVtb3ZlIGdsb2JhbCBkYXRhIGFyZ3VtZW50IGZyb20gaXNKU0Fy
cmF5LgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQb3Ap
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1NoaWZ0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY0ZpbHRlcik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTWFwKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNFdmVyeSk6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jRm9yRWFjaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29tZSk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmVkdWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZWR1Y2VSaWdodCk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Jv
b2xlYW5PYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOiBBZGQgZGVzdHJv
eSBmdW5jdGlvbiBwb2ludGVyIHRvIE1ldGhvZFRhYmxlLgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAg
ICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOiBBZGQgZGVzdHJveSBmdW5jdGlvbiBmb3IgRGF0
ZUluc3RhbmNlIGJlY2F1c2UgaXQgaGFzIGEgUmVmUHRyIAorICAgICAgICB0aGF0IG5lZWRzIGRl
c3RydWN0aW9uLgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6
IERpdHRvIChiZWNhdXNlIG9mIFVTdHJpbmcgbWVtYmVyKS4KKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Lmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwg
ZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDogQWRkIGRlc3Ryb3kgZnVuY3Rpb25zIGZv
ciBFeGVjdXRhYmxlQmFzZSBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChK
U0M6OkV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1
dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ry
b3kpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0Lgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBEaXR0by4gQWxzbyByZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJnIGZyb20gaXNKU0FycmF5LgorICAgICAgICAoSlNDOjpm
dW5jdGlvblByb3RvRnVuY0FwcGx5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5j
cHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6IFJl
bW92ZSBjYWxsIHRvIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyBzaW5jZSBpdCBubyAKKyAgICAg
ICAgbG9uZ2VyIGV4aXN0cy4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZ09uY2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6IFJlbW92ZSB2dGFibGVB
bmNob3IgZnVuY3Rpb24sIGFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LCAKKyAgICAgICAg
cmVtb3ZlIGZpcnN0IGFyZyBmcm9tIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2suCisgICAgICAgICogcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBjYWxsIH5KU0FycmF5
LiAgUmVwbGFjZSB2cHRyIGNoZWNrcyBpbiAKKyAgICAgICAgZGVzdHJ1Y3RvciB3aXRoIENsYXNz
SW5mbyBjaGVja3MuCisgICAgICAgIChKU0M6OkpTQXJyYXk6On5KU0FycmF5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6IFJl
bW92ZSBWUHRyU3RlYWxpbmdIYWNrLiAgUmVtb3ZlIGdsb2JhbERhdGEgYXJndW1lbnQgZnJvbSBp
c0pTQXJyYXkgCisgICAgICAgIGFuZCBjaGFuZ2UgdGhlbSB0byBjaGVjayB0aGUgQ2xhc3NJbmZv
IHJhdGhlciB0aGFuIHRoZSB2cHRycy4KKyAgICAgICAgKEpTQzo6aXNKU0FycmF5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBh
c3NlcnQuIFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkuCisgICAgICAgIChKU0M6OmJv
dW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBm
dW5jdGlvbiwgcmVwbGFjZSB2cHRyIGNoZWNrcyB3aXRoIENsYXNzSW5mbyBjaGVja3MuCisgICAg
ICAgIChKU0M6OkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpKU0J5
dGVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBSZW1v
dmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLgorICAgICAgICAoSlNDOjppc0pTQnl0ZUFycmF5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNz
ZXJ0LiAgQWRkIHN0YXRpYyBkZXN0cm95IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6IFJlbW92ZSBWUHRyU3RlYWxp
bmdIYWNrIGNvZGUuICBBZGQgZnVuY3Rpb24gZm9yIHJldHVybmluZyB0aGUgb2Zmc2V0IAorICAg
ICAgICBvZiB0aGUgQ2xhc3NJbmZvIHBvaW50ZXIgaW4gdGhlIG9iamVjdCBmb3IgdXNlIGJ5IHRo
ZSBKSVQuICBBZGQgdGhlIENsYXNzSW5mbyBwb2ludGVyIHRvIAorICAgICAgICB0aGUgSlNDZWxs
IGl0c2VsZiwgYW5kIGdyYWIgaXQgZnJvbSB0aGUgU3RydWN0dXJlLiAgUmVtb3ZlIHRoZSB2cHRy
IGFuZCBzZXRWUHRyIGZ1bmN0aW9ucywgCisgICAgICAgIGFzIHRoZXkgYXJlIG5vIGxvbmdlciB1
c2VkLiAgQWRkIGEgdmFsaWRhdGVkQ2xhc3NJbmZvIGZ1bmN0aW9uIHRvIEpTQ2VsbCBmb3IgYW55
IGNsaWVudHMgCisgICAgICAgIHRoYXQgd2FudCB0byB2ZXJpZnksIHdoaWxlIGluIERlYnVnIG1v
ZGUsIHRoYXQgdGhlIENsYXNzSW5mbyBjb250YWluZWQgaW4gdGhlIGNlbGwgaXMgdGhlIAorICAg
ICAgICBzYW1lIG9uZSBhcyB0aGF0IGNvbnRhaW5lZCBpbiB0aGUgU3RydWN0dXJlLiAgVGhpcyBp
c24ndCB1c2VkIHRvbyBvZnRlbiwgYmVjYXVzZSBtb3N0IG9mIAorICAgICAgICB0aGUgcGxhY2Vz
IHdoZXJlIHdlIGNvbXBhcmUgdGhlIENsYXNzSW5mbyB0byB0aGluZ3MgY2FuIGJlIGNhbGxlZCBk
dXJpbmcgZGVzdHJ1Y3Rpb24uICAKKyAgICAgICAgU2luY2UgdGhlIFN0cnVjdHVyZSBpcyB1bnJl
bGlhYmxlIGR1cmluZyB0aGUgcGhhc2Ugd2hlbiBkZXN0cnVjdG9ycyBhcmUgYmVpbmcgY2FsbGVk
LCAKKyAgICAgICAgd2UgY2FuJ3QgY2FsbCB2YWxpZGF0ZWRDbGFzc0luZm8uCisgICAgICAgIChK
U0M6OkpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2sgY29kZS4gIEFkZCBz
dGF0aWMgZGVzdHJveSwgcmVtb3ZlIHZ0YWJsZUFuY2hvciwgCisgICAgICAgIHJlbW92ZSBmaXJz
dCBhcmcgZnJvbSBjYWxsIHRvIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6IAorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcDogUmVtb3ZlIGFsbCBWUHRyIHN0ZWFsaW5nIGNvZGUgYW5kIHN0b3JhZ2UsIGluY2x1
ZGluZyBzdG9yZVZQdHJzLCAKKyAgICAgICAgYXMgdGhlc2UgdnB0cnMgYXJlIG5vIGxvbmdlciBu
ZWVkZWQgaW4gdGhlIGNvZGViYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlEZXNjcmlwdG9yOjpUeXBlZEFycmF5RGVzY3JpcHRv
cik6IENoYW5nZWQgdGhlIFR5cGVkQXJyYXlEZXNjcmlwdG9yIHRvIHVzZSAKKyAgICAgICAgQ2xh
c3NJbmZvIHJhdGhlciB0aGFuIHRoZSB2cHRyLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwOiBBZGQgdHJpdmlhbCBkZXN0
cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOiBEaXR0by4gUmVtb3ZlIGZpcnN0
IGFyZyBmcm9tIGlzSlNBcnJheSBjYWxscy4KKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDogCisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIEpTT2JqZWN0LCBy
ZW1vdmUgdnRhYmxlQW5jaG9yIAorICAgICAgICBmcm9tIEpTTm9uRmluYWxPYmplY3QgYW5kIEpT
RmluYWxPYmplY3QsIGFkZCBzdGF0aWMgZGVzdHJveSBmb3IgSlNGaW5hbE9iamVjdCBhbmQgCisg
ICAgICAgIEpTTm9uRmluYWxPYmplY3QsIGFkZCBpc0pTRmluYWxPYmplY3QgdXRpbGl0eSBmdW5j
dGlvbiBzaW1pbGFyIHRvIGlzSlNBcnJheSwgcmVtb3ZlIGFsbCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTTm9uRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjppc0pTRmluYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6IEFkZCBz
dGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChK
U0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oOiBEaXR0by4gCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6IERpdHRvLiBSZW1vdmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLiBBbHNvIHJl
bW92ZSBmaXh1cFZQdHIgY29kZSwgCisgICAgICAgIHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRv
IGZpeHVwIHZwdHJzLgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6
anNOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmcpOgorICAgICAgICAo
SlNDOjpqc1N1YnN0cmluZzgpOgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAg
IChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZ0J1aWxkZXIpOgor
ICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuY3BwOiAKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1l
L01hdGhPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOiBSZW1vdmUgY2FsbHMgdG8gZml4dXBWUHRyLCByZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNT
dHJpbmcuCisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToK
KyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDog
QWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlc3Ryb3kpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBmb3IgUmVnRXhwQ29uc3RydWN0b3IgYW5kIFJl
Z0V4cE1hdGNoZXNBcnJheS4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDogQWRk
IHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlc3Ryb3kpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29w
ZUNoYWluLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDogRGl0dG8uIFJlbW92ZSB2dGFibGVB
bmNob3IuCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6IE1vdmUgSlNDZWxsOjpmaW5p
c2hDcmVhdGlvbiBhbmQgSlNDZWxsIGNvbnN0cnVjdG9yIGludG8gU3RydWN0dXJlLmggCisgICAg
ICAgIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdGhlIGZ1bGwgU3RydWN0dXJlIHR5cGUgdG8g
YWNjZXNzIHRoZSBDbGFzc0luZm8gdG8gc3RvcmUgaW4gdGhlIEpTQ2VsbC4KKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
ZENsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBBZGQgbmV3IGFzc2VydGlvbiBBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUiwgd2hpY2ggdXNlcyBjbGFuZ3MgCisgICAgICAgIGFiaWxpdHkgdG8gdGVs
bCB1cyB3aGVuIGEgY2xhc3MgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBXZSB3aWxsIHVzZSB0
aGlzIGFzc2VydCAKKyAgICAgICAgbW9yZSBpbiBmdXR1cmUgcGF0Y2hlcyBhcyB3ZSBtb3ZlIHRv
d2FyZCBoYXZpbmcgYWxsIEpTQyBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnksIAorICAgICAg
ICB3aGljaCBtZWFucyBtb3ZpbmcgYXdheSBmcm9tIHVzaW5nIGRlc3RydWN0b3JzL2ZpbmFsaXpl
cnMuCisKIDIwMTEtMTItMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYmFjayB0aGUgY2FsbE9uTWFpblRocmVhZCBvdmVybG9hZCB0aGF0IHRh
a2VzIGEgV1RGOjpGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggZDM2YWJlZGQ4
NGQyYmVhODEwMWE2ZDVhMzg5Y2U4OGY3ODhkMmZlMy4uMzM4MGU5ZDljODQ3NzViNzE2MzdiZjY2
ZmVhNzkzNzI5MTE5NGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IEFkZCBzdGF0
aWMgZGVzdHJveSBmdW5jdGlvbi4KKyAgICAgICAgKFVzZXJPYmplY3RJbXA6OmRlc3Ryb3kpOgor
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKKwogMjAxMS0xMi0wMiAgRGF2aWQgTGV2aW4gIDxs
ZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIFdURiBjbGFzcyBmcm9tIFRlbXBv
cmFyaWx5Q2hhbmdlIHRvIFRlbXBvcmFyeUNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YzcxNDMxZmRi
NTMwZWE1MWNiYzZlOTBhZTViMGFlZGRmYjhkMjBlLi4xZjI2ZTU0MTJiNjJmNDMxMDg0ZjlhNGZi
MDdlMzhkOWIwNDAyZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTEtMTItMTMg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZS12
aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBEb2luZyBldmVyeXRoaW5nIGhl
cmUgdGhhdCB3YXMgZG9uZSB0byB0aGUgSlNDZWxsIGhpZXJhcmNoeSBpbiBKYXZhU2NyaXB0Q29y
ZS4gCisgICAgICAgIFNlZSB0aGUgQ2hhbmdlTG9nIGZvciB0aGlzIGNvbW1pdCBmb3IgYSBtb3Jl
IGluLWRlcHRoIGRlc2NyaXB0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEFkZC9y
ZW1vdmUgc3ltYm9scy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREN1c3RvbS5jcHA6IFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkgY2FsbC4K
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRXZWJraXRM
aW5lRGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDogQWRkIHRy
aXZhbCBkZXN0cnVjdG9yIGFzc2VydCBmb3IgRE9NQ29uc3RydWN0b3JPYmplY3QgCisgICAgICAg
IGFuZCBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4gIEFkZCBpbXBsZW1lbnRh
dGlvbiBmb3IgCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdGhhdCBkaXNwYXRjaGVz
IHRvIGRpZmZlcmVudCBmdW5jdGlvbnMgaW4gc3ViY2xhc3NlcyAKKyAgICAgICAgZGVwZW5kaW5n
IG9uIG91ciBjdXJyZW50IENsYXNzSW5mby4gIFdlIGRvIHRoaXMgc28gdGhhdCB3ZSBjYW4gZ2V0
IHJpZCBvZiB0aGUgCisgICAgICAgIHZpcnR1YWwtbmVzcyBvZiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBiZWNhdXNlIGFueSB2aXJ0dWFsIGZ1bmN0aW9ucyB3aWxsIHRocm93IAorICAgICAgICBv
ZmYgdGhlIGxheW91dCBvZiB0aGUgb2JqZWN0IGFuZCB3ZSdsbCBjcmFzaCBhdCBydW50aW1lLgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpkZXN0cm95KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaDogRGUtdmlydHVhbGl6ZSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOiBBZGQgc3RhdGlj
IGRlc3Ryb3kuCisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZXN0cm95KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6IEFkZCBhIENsYXNzSW5mbyB0
byBKU0RPTVdyYXBwZXIgc2luY2UgaXQgbm93IG92ZXJyaWRlcyAKKyAgICAgICAgYSBNZXRob2RU
YWJsZSBmdW5jdGlvbi4gUmVtb3ZlIHZ0YWJsZUFuY2hvciB2aXJ0dWFsIGZ1bmN0aW9uLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRl
c3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6
IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBvZiBwdXNoRXZlbnRIYW5kbGVyU2NvcGUgc28gdGhhdCAK
KyAgICAgICAgaXQgZGlzcGF0Y2hlcyB0byB0aGUgY29ycmVjdCBmdW5jdGlvbiBkZXBlbmRpbmcg
b24gdGhlIAorICAgICAgICBpZGVudGl0eSBvZiB0aGUgY2xhc3MgYXMgc3BlY2lmaWVkIGJ5IHRo
ZSBDbGFzc0luZm8uICAKKyAgICAgICAgU2VlIEpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0IGZvciBleHBsYW5hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6
cHVzaEV2ZW50SGFuZGxlclNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tl
dEN1c3RvbS5jcHA6IFJlbW92ZSBmaXJzdCBhcmcgdG8gaXNKU0FycmF5IGNhbGwuCisgICAgICAg
IChXZWJDb3JlOjpKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHA6IEFkZCBzdGF0
aWMgZGVzdHJveS4KKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEJhc2U6OmRlc3Ry
b3kpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaDogCisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOiBSZW1vdmUgZmlyc3QgYXJnIHRvIGlz
SlNBcnJheSBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6anNUb0luc3BlY3RvclZhbHVlKTogCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmlzQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpnZXRTcGFyc2VJbmRleCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6
IFJlbW92ZSB2aXJ0dWFsLW5lc3Mgb2YgYW55IGN1c3RvbSBwdXNoRXZlbnRIYW5kbGVyU2NvcGUg
KHNlZSAKKyAgICAgICAgSlNOb2RlQ3VzdG9tOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUgZm9yIGV4
cGxhbmF0aW9uKS4gIFJlbW92ZSB2aXJ0dWFsIHRvQm9vbGVhbiAKKyAgICAgICAgZm9yIGFueWJv
ZHkgd2hvIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCwgc2luY2Ugb3VyIEpTT2JqZWN0IGltcGxl
bWVudGF0aW9uIGhhbmRsZXMgCisgICAgICAgIHRoaXMgYmFzZWQgb24gdGhlIFR5cGVJbmZvIGlu
IHRoZSBTdHJ1Y3R1cmUuIEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBhbnkgCisg
ICAgICAgIGNsYXNzIG90aGVyIHRoYW4gRE9NV2luZG93IG9yIFdvcmtlckNvbnRleHRzLgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IENoYW5nZSBDbGFzc0luZm8gZGVmaW5pdGlv
bnMgdG8gdXNlIEJhc2U6OnNfaW5mbywgc2luY2UgCisgICAgICAgIHR5cGluZyB0aGUgcGFyZW50
IGNsYXNzIG1vcmUgdGhhbiBvbmNlIGlzIGR1cGxpY2F0aW9uIG9mIGluZm9ybWF0aW9uIGFuZCBp
bmNyZWFzZXMgCisgICAgICAgIHRoZSBsaWtlbGlob29kIG9mIG1pc3Rha2VzLiAgUGFzcyBDbGFz
c0luZm8gdG8gVHlwZUFycmF5RGVzY3JpcHRvcnMgaW5zdGVhZCBvZiB2cHRyLiAKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKTogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBh
c3NlcnQgZm9yIGFsbCBnZW5lcmF0ZWQgY29uc3RydWN0b3JzLgorICAgICAgICAqIGJyaWRnZS9j
L0NSdW50aW1lT2JqZWN0LmNwcDogUmVtb3ZlIGVtcHR5IHZpcnR1YWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5oOiAKKyAgICAgICAgKiBicmlkZ2Uvam5p
L2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHA6IERpdHRvLgorICAgICAgICAqIGJyaWRnZS9qbmkv
anNjL0phdmFSdW50aW1lT2JqZWN0Lmg6IAorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50
aW1lT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2Jq
ZWN0Lm1tOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOiBBZGQgc3RhdGlj
IGRlc3Ryb3kgZm9yIE9iamNGYWxsYmFja09iamVjdEltcC4gRGUtdmlydHVhbGl6ZSAKKyAgICAg
ICAgdG9Cb29sZWFuIGluIHRoZSBzaG9ydCB0ZXJtLiAgTmVlZCBsb25nZXIgdGVybSBmaXguCisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2Uv
cXQvcXRfcnVudGltZS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBRdFJ1bnRpbWVNZXRob2Qu
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3kpOgorICAg
ICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmg6IERlLXZpcnR1YWxpemUgflF0UnVudGltZU1l
dGhvZC4KKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6IERlLXZpcnR1YWxpemUg
ZGVzdHJ1Y3Rvci4gQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSdW50aW1lQXJy
YXk6OmRlc3Ryb3kpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDogUmVtb3ZlIHZ0YWJsZUFuY2hvci4gQWRkIHN0
YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpkZXN0cm95KToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kuCisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmpl
Y3QuaDoKKwogMjAxMS0xMi0xNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNZWRpYSB1cmwgd2l0aCBmcmFnbWVudCBtYXkgbm90IGxvYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCAxN2VjN2I4ZDlkY2QzYmJjZTg1NTRmNmRlMmJmYzZkOWU2YjkzMDE5Li5m
ZWM3YTY4YjQzYzEzMGE4MGZmZjk2OGY4MTI1YzQzNDExYzA3MWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6IFJlbW92ZSBlbXB0eSB2aXJ0dWFsIGRlc3RydWN0b3Iu
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tOgorCiAyMDEx
LTEyLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYktp
dCBjb2RlIHNob3VsZG4ndCBiZSBjYWxsaW5nIGFwcGx5Q29tbWFuZCBkaXJlY3RseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDk1ZjBlMTcyMjIwMGU4MGM1MzFlNzE1NzdjMjljMWVlMDFhY2ZlYTQuLjJlMTdmMTQ5
YWZmZDQ2OGVkOTgwZWFkZTYwMTYwZjkxMWJmMThmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMS0xMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCisgICAgICAgIERlLXZpcnR1YWxpemUgZGVzdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE1ldGhvZC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDogQWRkIHN0YXRp
YyBkZXN0cm95LgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZXN0cm95KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAq
IHdpbi9XZWJLaXQyLmRlZjogQWRkL3JlbW92ZSBuZWNlc3Nhcnkgc3ltYm9scy4KKyAgICAgICAg
KiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6IERpdHRvLgorCiAyMDExLTEyLTE0ICBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgW1F0XSBbV0syXSBNb3ZlIGRvd25sb2FkIGhhbmRsaW5nIG91dCBvZiBRdFdlYlBhZ2VQ
cm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGI2MDFmM2VjYTM0ZGU1YjAwMzczMDA3NjNlNmFiMjU3YmQxNGI0MTEu
LjEzNDllNGYzZjhiN2Y1Y2QyMTNjYWEyYzgyZDUyOWZjYmFhN2FhNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5
LDYgKzU5LDExIEBAIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6fkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cigpCiAgICAgICAgIEpTQ2xhc3NSZWxlYXNlKG1fY2xhc3MpOwogfQogCit2b2lkIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvcio+KGNlbGwpLT5KU0NhbGxiYWNrQ29uc3RydWN0b3I6On5KU0NhbGxi
YWNrQ29uc3RydWN0b3IoKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SlNDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAppbmRleCBiMzIwYTkwMWM5MDQzY2ZkMDc4
MjcxMWI1MzJkODM4NzZlYjgyYjkwLi40M2E3M2MzMTQzNzI2ODU4MzQzOGFlY2Q4ZGJiNWVjNzNk
YTBiODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgfkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cigpOworICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzOyB9CiAgICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxiYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjazsgfQogICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVu
Y3Rpb24uY3BwCmluZGV4IGRkMTA2Y2NlZjIzZGJjN2Q1ZTAzZmRhZDQ3ODlhYjk2OWQxZDNiNmMu
LjNmYmMwMDQ3MDYyZTE3MWEwOTMxNzI5NDkxMzYxZWY4NjVmYTkwZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2Fs
bGJhY2tGdW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0NhbGxiYWNr
RnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0Z1bmN0aW9uOjpzX2luZm8g
PSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrRnVuY3Rpb24pIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCmluZGV4IGZiOWQ3MzAyOWM2
MzAyMGI4Nzk1YjlhZmZmMTc4NWIzYWNmZWE1NmEuLmVmOWNiOTI1YzA5MDQxMTcyNTYxYWU2NDg5
ODJhYjA1NTg1NTVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU3RydWN0dXJlKiBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEK
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZv
KTsgCiB9CiAKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Cit2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKS0+SlNDYWxsYmFja09iamVjdDo6fkpTQ2FsbGJhY2tPYmplY3QoKTsKK30K
Kwogdm9pZCBKU0NhbGxiYWNrT2JqZWN0RGF0YTo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+IGhh
bmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBzdGF0aWNf
Y2FzdDxKU0NsYXNzUmVmPihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggOTFmZjYyNDlkZGZmOTEwZmE1YzJiMTM1Y2RkNWY2Mjhk
MWIyMmIxNS4uYTUxZWQzZTAxZGViOGVkZDIxNjA5NGEwMDgyNDI4M2FmMzc3Y2VhNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE3Nyw2ICsx
NzcsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCopOwogCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjdlOTM2NDhmZGJhNzUzZjk5YWQ1ZDU2ZjcyM2RjODc0
ZmNiOGY5MS4uMmU0Y2UwMmU1YWNkZmQ5NGE0MTAzYTY5NDRlZDAzMGVhYzYzODQwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xMjUsNiArMTI1LDcgQEAg
X19aTjNKU0MxMUpTQnl0ZUFycmF5MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVSS04KIF9fWk4zSlNDMTFKU0J5dGVBcnJheTI1Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVy
dHlTbG90RQogX19aTjNKU0MxMUpTQnl0ZUFycmF5M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzExSlNCeXRlQXJyYXk2c19pbmZvRQorX19aTjNKU0MxMUpTQnl0ZUFycmF5N2Rl
c3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0
ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQogX19aTjNKU0MxMVBhcnNlckFyZW5h
NXJlc2V0RXYKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwU291
cmNlQ29kZUVQTlNfN0pTVmFsdWVFCkBAIC0xMzQsMTMgKzEzNSwxMCBAQCBfX1pOM0pTQzEyRGF0
ZUluc3RhbmNlMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFZAogX19aTjNKU0Mx
MkRhdGVJbnN0YW5jZTZzX2luZm9FCiBfX1pOM0pTQzEyRGF0ZUluc3RhbmNlQzFFUE5TXzlFeGVj
U3RhdGVFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTBDbGllbnREYXRh
RDJFdgotX19aTjNKU0MxMkpTR2xvYmFsRGF0YTExanNBcnJheVZQdHJFCiBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRFTlNfMTVUaHJlYWRTdGFja1R5cGVFTlNfOEhlYXBTaXpl
RQotX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEyanNTdHJpbmdWUHRyRQogX19aTjNKU0MxMkpTR2xv
YmFsRGF0YTEyc3RvcFNhbXBsaW5nRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExM3N0YXJ0U2Ft
cGxpbmdFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0ZHVtcFNhbXBsZURhdGFFUE5TXzlFeGVj
U3RhdGVFCi1fX1pOM0pTQzEySlNHbG9iYWxEYXRhMTRqc0Z1bmN0aW9uVlB0ckUKIF9fWk4zSlND
MTJKU0dsb2JhbERhdGExNHJlc2V0RGF0ZUNhY2hlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGEx
NHNoYXJlZEluc3RhbmNlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNWR1bXBSZWdFeHBUcmFj
ZUV2CkBAIC0xNzgsNiArMTc2LDcgQEAgX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjVzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfNkpT
Q2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQ
dXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0aW5pdEVQTlNfOEpTT2Jq
ZWN0RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0NnNfaW5mb0UKK19fWk4zSlNDMTRKU0dsb2Jh
bE9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0RDJF
dgogX19aTjNKU0MxNE1hY2hpbmVUaHJlYWRzMTZhZGRDdXJyZW50VGhyZWFkRXYKIF9fWk4zSlND
MTRNYXJrU3RhY2tBcnJheTZleHBhbmRFdgpAQCAtMTk0LDE0ICsxOTMsMTUgQEAgX19aTjNKU0Mx
NVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlO
U183VW5rbm93bkVFRVAKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhh
bmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgogX19a
TjNKU0MxNWNyZWF0ZVR5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQotX19a
TjNKU0MxNkludGVybmFsRnVuY3Rpb24xMnZ0YWJsZUFuY2hvckV2CiBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbjE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVu
dGlmaWVyRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240bmFtZUVQTlNfOUV4ZWNTdGF0ZUUK
IF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNnNfaW5mb0UKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1
bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFCitfX1pOM0pTQzE2
SlNOb25GaW5hbE9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxNkpTVmFyaWFi
bGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJvbFRhYmxlR2V0
RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTZK
U1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCitf
X1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0Mx
NmNyZWF0ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlND
MTZzbG93VmFsaWRhdGVDZWxsRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0MxNnNsb3dW
YWxpZGF0ZUNlbGxFUE5TXzZKU0NlbGxFCkBAIC0yMTEsNiArMjExLDcgQEAgX19aTjNKU0MxN0pT
QVBJVmFsdWVXcmFwcGVyNnNfaW5mb0UKIF9fWk4zSlNDMTdQcm9wZXJ0eU5hbWVBcnJheTNhZGRF
UE4zV1RGMTBTdHJpbmdJbXBsRQogX19aTjNKU0MxN2NyZWF0ZVN5bnRheEVycm9yRVBOU185RXhl
Y1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uMTRmaW5p
c2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMThE
ZWJ1Z2dlckFjdGl2YXRpb242c19pbmZvRQogX19aTjNKU0MxOERlYnVnZ2VyQWN0aXZhdGlvbkMx
RVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0b3IxMXNldFdy
aXRhYmxlRWIKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0b3IxMnNldFVuZGVmaW5lZEV2CkBA
IC0yNjUsNiArMjY2LDcgQEAgX19aTjNKU0M0WWFycjlpbnRlcnByZXRFUE5TMF8xNUJ5dGVjb2Rl
UGF0dGVybkVSS05TXzdVU3RyaW5nRWpqUGkKIF9fWk4zSlNDNGNhbGxFUE5TXzlFeGVjU3RhdGVF
TlNfN0pTVmFsdWVFTlNfOENhbGxUeXBlRVJLTlNfOENhbGxEYXRhRVMyX1JLTlNfN0FyZ0xpc3RF
CiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9STlNfOENhbGxEYXRhRQogX19aTjNK
U0M2SlNDZWxsMTZnZXRDb25zdHJ1Y3REYXRhRVBTMF9STlNfMTNDb25zdHJ1Y3REYXRhRQorX19a
TjNKU0M2SlNDZWxsN2Rlc3Ryb3lFUFMwXwogX19aTjNKU0M2SlNDZWxsOWdldE9iamVjdEV2CiBf
X1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRU5TXzE0SlNMb2NrQmVoYXZpb3JFCiBfX1pO
M0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRVBOU185RXhlY1N0YXRlRQpAQCAtMjc2LDEzICsy
NzgsMTMgQEAgX19aTjNKU0M2SlNMb2NrOWxvY2tDb3VudEV2CiBfX1pOM0pTQzZKU0xvY2tDMUVQ
TlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDNlJlZ0V4cDVtYXRjaEVSTlNfMTJKU0dsb2JhbERhdGFF
UktOU183VVN0cmluZ0VpUE4zV1RGNlZlY3RvcklpTG0zMkVFRQogX19aTjNKU0M2UmVnRXhwNmNy
ZWF0ZUVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmluZ0VOU18xMVJlZ0V4cEZsYWdzRQot
X19aTjNKU0M2UmVnRXhwRDFFdgogX19aTjNKU0M3SlNBcnJheTEzdmlzaXRDaGlsZHJlbkVQTlNf
NkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDN0pTQXJyYXkxNGZpbmlzaENyZWF0
aW9uRVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDN0pTQXJyYXkxNGZpbmlzaENyZWF0aW9u
RVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0M3SlNBcnJheTE1c2V0
U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0FycmF5MjVnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzdKU0FycmF5NnNfaW5mb0UKK19fWk4zSlNDN0pTQXJyYXk3ZGVzdHJveUVQTlNfNkpTQ2Vs
bEUKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3RoRWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVSTlNf
MTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzdKU0FycmF5QzJFUk5TXzEy
SlNHbG9iYWxEYXRhRVBOU185U3RydWN0dXJlRQpAQCAtMzEzLDcgKzMxNSw2IEBAIF9fWk4zSlND
OEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUFMwX1BOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVMxX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBHZXR0ZXJFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDEybG9va3VwU2V0dGVyRVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3QxMnRvVGhpc09i
amVjdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDOEpTT2JqZWN0MTJ2dGFi
bGVBbmNob3JFdgogX19aTjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxF
Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5T
XzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09i
amVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCkBAIC0zMzAsNiArMzMxLDcgQEAgX19aTjNK
U0M4SlNPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQUzBfUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXIKIF9fWk4zSlNDOEpTT2JqZWN0MjVnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBf
X1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4SlNP
YmplY3Q2c19pbmZvRQorX19aTjNKU0M4SlNPYmplY3Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9f
Wk4zSlNDOEpTT2JqZWN0OWNsYXNzTmFtZUVQS1MwXwogX19aTjNKU0M4SlNTdHJpbmc2c19pbmZv
RQogX19aTjNKU0M4UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdFUE5TXzlFeGVjU3RhdGVFUktOU183
VVN0cmluZ0UKQEAgLTM1MCw3ICszNTIsNiBAQCBfX1pOM0pTQzlTdHJ1Y3R1cmUzZ2V0RVJOU18x
MkpTR2xvYmFsRGF0YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCiBfX1pOM0pT
QzlTdHJ1Y3R1cmU0MGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVFUFMw
X1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0dXJlNnNf
aW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0ds
b2JhbE9iamVjdEVOU183SlNWYWx1ZUVSS05TXzhUeXBlSW5mb0VQS05TXzlDbGFzc0luZm9FCi1f
X1pOM0pTQzlTdHJ1Y3R1cmVEMUV2CiBfX1pOM0pTQzljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVF
TlNfN0pTVmFsdWVFTlNfMTNDb25zdHJ1Y3RUeXBlRVJLTlNfMTNDb25zdHJ1Y3REYXRhRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQ2VxRVJLTlNfN1VTdHJpbmdFUEtjCiBfX1pOM0pTQ2d0RVJLTlNf
N1VTdHJpbmdFUzJfCkBAIC02MTksMTYgKzYyMCw3IEBAIF9fWk5LM1dURjZTdHJpbmc4dG9JbnRQ
dHJFUGIKIF9fWk5LM1dURjZTdHJpbmc4dG9VSW50NjRFUGIKIF9fWk5LM1dURjZTdHJpbmc5c3Vi
c3RyaW5nRWpqCiBfX1pOSzNXVEY4Q29sbGF0b3I3Y29sbGF0ZUVQS3RtUzJfbQotX19aVFZOM0pT
QzEyU3RyaW5nT2JqZWN0RQotX19aVFZOM0pTQzEzSlNGaW5hbE9iamVjdEUKLV9fWlRWTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0RQotX19aVFZOM0pTQzE0U2NvcGVDaGFpbk5vZGVFCi1fX1pUVk4zSlND
MTVKU1dyYXBwZXJPYmplY3RFCiBfX1pUVk4zSlNDMTVXZWFrSGFuZGxlT3duZXJFCi1fX1pUVk4z
SlNDMTZJbnRlcm5hbEZ1bmN0aW9uRQotX19aVFZOM0pTQzE2SlNWYXJpYWJsZU9iamVjdEUKIF9f
WlRWTjNKU0M4RGVidWdnZXJFCi1fX1pUVk4zSlNDOEpTT2JqZWN0RQotX19aVFZOM0pTQzhKU1N0
cmluZ0UKIF9qc2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0aW9uCiBfa0pTQ2xhc3NEZWZpbml0
aW9uRW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKaW5kZXggZmZkNWE1MjQ2YzU0MjY5YmZiMzQwZGMxYzQ1YmY0NThhMWI0Mzk4ZS4u
ZmM1MTZhYzIzMDA1NmZmMzg2ZTFmZTJkNmM2OGUwZDlkMWNjMDcwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTMzLDExICsz
Myw5IEBAIEVYUE9SVFMKICAgICA/PzFEZWJ1Z2dlckBKU0NAQFVBRUBYWgogICAgID8/MURyb3BB
bGxMb2Nrc0BKU0xvY2tASlNDQEBRQUVAWFoKICAgICA/PzFKU0dsb2JhbERhdGFASlNDQEBRQUVA
WFoKLSAgICA/PzFKU0dsb2JhbE9iamVjdEBKU0NAQFVBRUBYWgotICAgID8/MUpTVmFyaWFibGVP
YmplY3RASlNDQEBVQUVAWFoKKyAgID8/MUpTR2xvYmFsT2JqZWN0QEpTQ0BAUUFFQFhaCiAgICAg
Pz8xTXV0ZXhAV1RGQEBRQUVAWFoKICAgICA/PzFSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RGQEBR
QUVAWFoKLSAgICA/PzFTY29wZUNoYWluTm9kZUBKU0NAQEVBRUBYWgogICAgID8/MVNvdXJjZVBy
b3ZpZGVyQ2FjaGVASlNDQEBRQUVAWFoKICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVA
WFoKICAgICA/PzFXVEZUaHJlYWREYXRhQFdURkBAUUFFQFhaCkBAIC0xNTgsNiArMTU2LDkgQEAg
RVhQT1JUUwogICAgID9kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25AU3RydWN0dXJlQEpTQ0BA
UUFFWEFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9kZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFA
MkBQQVYxMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVzdHJveUBIZWFwQEpTQ0BAUUFFWFha
CisgICAgP2Rlc3Ryb3lASlNCeXRlQXJyYXlASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgorICAgID9k
ZXN0cm95QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQFoKKyAgICA/ZGVzdHJv
eUBKU05vbkZpbmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQFoKICAgICA/ZGV0YWNoQERl
YnVnZ2VyQEpTQ0BAVUFFWFBBVkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/ZGV0YWNoVGhyZWFk
QFdURkBAWUFYSUBaCiAgICAgP2RpZFRpbWVPdXRAVGltZW91dENoZWNrZXJASlNDQEBRQUVfTlBB
VkV4ZWNTdGF0ZUAyQEBaCkBAIC0zNjMsOSArMzY0LDYgQEAgRVhQT1JUUwogICAgID92aXNpdENo
aWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JA
MkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsVGhpc0BKU0NAQEtBWFBBVkpTQ2VsbEAy
QEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/dmlzaXRDaGlsZHJlbkBKU09iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dnRhYmxlQW5jaG9yQEludGVy
bmFsRnVuY3Rpb25ASlNDQEBFQUVYWFoKLSAgICA/dnRhYmxlQW5jaG9yQEpTRmluYWxPYmplY3RA
SlNDQEBFQUVYWFoKLSAgICA/dnRhYmxlQW5jaG9yQEpTT2JqZWN0QEpTQ0BAVUFFWFhaCiAgICAg
P3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZv
clRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0
eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCmluZGV4IDFlMDNjZDFmYTk2OWY3YTZh
ZTgxNDY4NTMxZThkYzk2Y2FkZmUzYWMuLjgwYmUzMTBiNTk1MzA3OGM2ZmRiNmM1NDY4MjcyNWZj
ODI3OWUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC0zMCw2ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRGVidWdnZXJBY3RpdmF0aW9uKTsK
KworY29uc3QgQ2xhc3NJbmZvIERlYnVnZ2VyQWN0aXZhdGlvbjo6c19pbmZvID0geyAiRGVidWdn
ZXJBY3RpdmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShE
ZWJ1Z2dlckFjdGl2YXRpb24pIH07CisKIERlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3Rp
dmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5kZWJ1Z2dlckFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCkp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmgKaW5kZXggNDRkMDlhMTgwNzhjNGRmZTBmN2M3MDNjYjJhNTc2MjFhMDk2MWE2NS4u
NjhjYzNhMzFiMjE4ZTM4MGU2Y2NiZmVjZjMwYWM4MTFmMjUyNmI1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNTIs
NiArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVmaW5lR2V0
dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CisKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpIAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMzJlMzhlMWQ4OGFkYzkwMTJhODdmYjdiMWI2OTE1M2Rm
MzYxZTU3Ny4uOWVkODVjOTI4OTEwODE1ZTRhNjI1OWZmMWM2ZGJkNDkxOWQ4OTRjMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNDQsNyArMTQ0
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LAogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERh
dGEsIGJhc2VWYWx1ZSkpIHsKKyAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAgICAg
ICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgIGlmIChhcnJh
eS0+Y2FuU2V0SW5kZXgoaW5kZXgpKSB7CiAgICAgICAgICAgICBhcnJheS0+c2V0SW5kZXgoKmds
b2JhbERhdGEsIGluZGV4LCB2YWx1ZSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIHVpbnQz
Ml90IGluZGV4LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzSlNCeXRlQXJy
YXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5B
Y2Nlc3NJbmRleChpbmRleCkpIHsKKyAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYm
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGluZGV4KSkgewogICAgICAg
ICBKU0J5dGVBcnJheSogYnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKICAgICAg
ICAgLy8gRklYTUU6IHRoZSBKSVRzdHViIHVzZWQgdG8gcmVsaW5rIHRoaXMgdG8gYW4gb3B0aW1p
emVkIGZvcm0hCiAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKQEAgLTI2OSwxOCArMjY5
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGROb3RO
dW1iZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGlu
ZGV4KQogewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7Ci0KICAgICAvLyBGSVhNRTogdGhlIEpJVCB1c2VkIHRvIGhhbmRsZSB0aGVzZSBpbiBjb21w
aWxlZCBjb2RlIQotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZSkgJiYgYXNBcnJh
eShiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTQXJyYXkoYmFzZSkgJiYg
YXNBcnJheShiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzQXJyYXkoYmFzZSktPmdldEluZGV4KGluZGV4KSk7CiAKICAgICAvLyBGSVhN
RTogdGhlIEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0byBhbiBvcHRpbWl6ZWQgZm9ybSEK
LSAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+
Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5n
KGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNTdHJpbmcoYmFzZSktPmdldEluZGV4KGV4ZWMsIGluZGV4KSk7CiAKICAgICAvLyBGSVhN
RTogdGhlIEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0byBhbiBvcHRpbWl6ZWQgZm9ybSEK
LSAgICBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlKSAmJiBhc0J5dGVBcnJheShi
YXNlKS0+Y2FuQWNjZXNzSW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2Up
ICYmIGFzQnl0ZUFycmF5KGJhc2UpLT5jYW5BY2Nlc3NJbmRleChpbmRleCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCeXRlQXJyYXkoYmFzZSktPmdldEluZGV4KGV4ZWMsIGlu
ZGV4KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoYmFzZSkuZ2V0KGV4
ZWMsIGluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
cGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAppbmRl
eCAyYjU2ODA4MDRhYzg5YTY4NWQwODVlMTdkODMxYjUzNDU4ZmIxY2QxLi5jNDRlOGI3Mzg5MGNm
YmZkN2ZiZWY2ODI4MzE0MWYzZGYwZmI4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdl
dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmll
cgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAKLSAgICBp
ZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1
ZSkgJiYgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLmJhc2VH
UFIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIg
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKQEAgLTE4Myw3ICsx
ODMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllcgogICAgICAgICAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAgCi0gICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAg
ICAgCiAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3R1
YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09G
RlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc2NyYXRjaEdQUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDliYmZkMzNh
ZTI1ZDJhYzU4MzZlZjRiYTk0ZGRiMjgyNTZhNWVmOWQuLjAyMGYxMmM2YjVhY2FkZGZlZGIzZTVi
OTA3NmM2OTI1YjUzNDlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFu
Y2hOb2QKICAgICAgICAgYWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgbm90VGFrZW4pOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiBu
b2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hl
Y2tlciBwcmVkaWN0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNo
ZWNrKQogewogICAgIE5vZGUmIGJyYW5jaE5vZGUgPSBhdChicmFuY2hOb2RlSW5kZXgpOwogICAg
IEJsb2NrSW5kZXggdGFrZW4gPSBicmFuY2hOb2RlLnRha2VuQmxvY2tJbmRleCgpOwpAQCAtODI1
LDkgKzgyNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVx
dWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hOCiAgICAgR1BSUmVnIG9wMkdQUiA9
IG9wMi5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykp
KTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIo
KSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBh
ZGRCcmFuY2gobV9qaXQuYnJhbmNoUHRyKGNvbmRpdGlvbiwgb3AxR1BSLCBvcDJHUFIpLCB0YWtl
bik7CiAgICAgaWYgKG5vdFRha2VuICE9IChtX2Jsb2NrICsgMSkpCkBAIC04ODcsMTEgKzg4Nywx
MSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYgbm9k
ZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICB9IGVsc2UgaWYg
KG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0
KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAgICAgICAgICAgIGNv
bXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24p
OworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNo
Tm9kZUluZGV4LCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlv
bik7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9k
ZS5jaGlsZDIoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYg
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hp
bGQyKCkpKSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9k
ZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0Fy
cmF5UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0
eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0FycmF5OjpzX2luZm8sIGlzQXJyYXlQcmVkaWN0
aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShu
b2RlLmNoaWxkMigpKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMDY3LDEyICsxMDY3LDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5
VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5
cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
dGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChp
c0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CkBAIC0xMDgyLDQyICsx
MDgyLDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRl
bXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJB
cnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlE
ZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVz
Y3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNj
cmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNj
cmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlE
ZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGlm
IChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKQEAgLTExMjcsMTMgKzExMjcsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBl
bHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGlzSW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewpA
QCAtMTE0MSw0OSArMTE0MSw0OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50
VHlwZXMoKQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmludDhBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNz
SW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVz
Y3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAu
Z3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1f
dnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNl
IGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQx
NkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRh
Z0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNVaW50MzJBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CiAgICAgICAgIH0gIGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlv
bihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQz
MkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICB9ICAgZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJy
YXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CiAgICAgICAgIH0gCiAjZW5kaWYKICAgICB9CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2Us
IEdQUlJlZyBwcm9wZXJ0eSwgTgogICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGls
ZDMoKTsKICAgICAKICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUoYmFzZUluZGV4KS5tX3R5cGUpKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2UpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
Qnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHZhbHVlOwogICAgIEdQ
UlJlZyB2YWx1ZUdQUjsKIApAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3Im
IGRlc2MKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIAogICAgIGlm
IChuZWVkc1NwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9y
Lm1fdnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgCiAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIGRlc2NyaXB0b3IubV9sZW5ndGhPZmZzZXQp
LCByZXN1bHRHUFIpOwogICAgIApAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVz
Y3JpcHRvciYKICAgICBOb2RlSW5kZXggdmFsdWVJbmRleCA9IG5vZGUuY2hpbGQzKCk7CiAgICAg
CiAgICAgaWYgKHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzICE9IE5vVHlwZWRBcnJheVR5cGVTcGVj
Q2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgIEdQ
UlRlbXBvcmFyeSB2YWx1ZTsKICAgICBHUFJSZWcgdmFsdWVHUFI7CiAgICAgCkBAIC0xODMxLDcg
KzE4MzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5
cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0bwogICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZUluZGV4KTsKICAgICAKICAgICBpZiAoc3BlY3VsYXRp
b25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKLSAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwg
YmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
ZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICAKQEAgLTIyMDgsOSArMjIwOCw5IEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uCiAgICAgZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKGF0KG5vZGUu
Y2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpCiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21w
YXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgZWxzZSBpZiAobm9kZS5vcCA9PSBDb21w
YXJlRXEgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoYXQobm9kZS5jaGlsZDEo
KSksIGF0KG5vZGUuY2hpbGQyKCkpKSkKLSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5v
ZGUsIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsIGlzRmluYWxPYmplY3RQ
cmVkaWN0aW9uKTsKKyAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0ZpbmFs
T2JqZWN0OjpzX2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICBlbHNlIGlmIChu
b2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheShhdChub2Rl
LmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKQotICAgICAgICBjb21waWxlT2JqZWN0RXF1
YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgaXNBcnJheVByZWRp
Y3Rpb24pOworICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTQXJyYXk6OnNf
aW5mbywgaXNBcnJheVByZWRpY3Rpb24pOwogICAgIGVsc2UKICAgICAgICAgbm9uU3BlY3VsYXRp
dmVOb25QZWVwaG9sZUNvbXBhcmUobm9kZSwgY29uZGl0aW9uLCBvcGVyYXRpb24pOwogICAgIApA
QCAtMjM0MiwyNiArMjM0MiwyNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0
RXEoTm9kZSYgbm9kZSkKICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
YXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewogICAgICAgICBOb2RlSW5k
ZXggYnJhbmNoTm9kZUluZGV4ID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYg
KGJyYW5jaE5vZGVJbmRleCAhPSBOb05vZGUpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9s
ZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCAm
SlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAgICAgICAg
ICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRleDsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0
eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCBpc0ZpbmFsT2Jq
ZWN0UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNG
aW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFy
cmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKICAgICAgICAgTm9k
ZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAg
IGlmIChicmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmdsb2JhbERh
dGEoKS0+anNBcnJheVZQdHIsIGlzQXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGNvbXBp
bGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgJkpTQXJyYXk6
OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgbV9jb21w
aWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQotICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0ciwgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICBjb21waWxl
T2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24p
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMjM4Nyw3ICsyMzg3LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Uo
Tm9kZSYgbm9kZSkKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAg
ICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogCiAgICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIHN0b3JhZ2VSZWcpOwogICAgICAgICAKQEAgLTIzOTcsNTEgKzIzOTcsNTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9k
ZSYgbm9kZSkKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICB9
IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7
CiAgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQnl0ZUFy
cmF5OjpvZmZzZXRPZlN0b3JhZ2UoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKICAgICAgICAgY29u
c3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCkt
PmludDhBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc0ludDhBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VS
ZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsK
ICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBk
ZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CiAgICAgICAg
IGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzSW50MTZBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5m
bykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxz
ZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CiAg
ICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzSW50MzJB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2Ns
YXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAg
IH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgp
KSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9q
aXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlz
VWludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRv
ci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcp
OwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDE2
QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciA9IG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAg
IGlmICghaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
ZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0
b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlVWludDMyQXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCk7
CiAgICAgICAgIGlmICghaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRv
ci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9m
ZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURl
c2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9y
Lm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5j
aGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKICAgICAgICAgY29uc3Qg
VHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0NjRBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc0Zsb2F0NjRBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykp
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0KICAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VSZWcs
IG1fY29tcGlsZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCA2YWQ4ZWIwNGE4YmI5ZmE3MjIzOTA0MWM4ODZmN2I2NTI5MmNjNGZk
Li4wYzE2MzI3MDE3MzA0NWExNDdlMzg1NzcwNzFlN2U0MWNmODU1ODU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xOTUwLDEyICsxOTUw
LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYsIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
Q29uZGl0aW9uLCBTX0RGR09wZXJhdGlvbl9FSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
SW50ZWdlckJyYW5jaChOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgSklUQ29tcGls
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91Ymxl
QnJhbmNoKE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6RG91
YmxlQ29uZGl0aW9uKTsKLSAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5v
ZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hl
Y2tlcik7Ci0gICAgdm9pZCBjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIHZvaWQqIHZwdHIs
IFByZWRpY3Rpb25DaGVja2VyKTsKKyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFs
aXR5KE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qLCBQ
cmVkaWN0aW9uQ2hlY2tlcik7CisgICAgdm9pZCBjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYs
IGNvbnN0IENsYXNzSW5mbyosIFByZWRpY3Rpb25DaGVja2VyKTsKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZUFkZChOb2RlJik7Ci0gICAgdm9pZCBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qo
Tm9kZUluZGV4IHZhbHVlLCB2b2lkKiB2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsK
KyAgICB2b2lkIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggdmFsdWUs
IGNvbnN0IENsYXNzSW5mbyosIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOwogICAgIHZvaWQg
Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYpOwotICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFu
Y2goTm9kZUluZGV4IHZhbHVlLCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2Vu
LCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKKyAgICB2b2lkIGVtaXRP
YmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCB2YWx1ZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxv
Y2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiwgYm9vbCBuZWVkU3BlY3VsYXRpb25D
aGVjayk7CiAgICAgdm9pZCBlbWl0QnJhbmNoKE5vZGUmKTsKICAgICAKICAgICB2b2lkIGNvbXBp
bGVJbnRlZ2VyQ29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOwpAQCAtMjAxMSw4ICsyMDExLDggQEAgcHJpdmF0ZToKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIpLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCk7
CiAgICAgICAgIAotICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyB2dGFibGUKLSAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUikpOworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBjbGFzc0lu
Zm8gcG9pbnRlcgorICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBpbmhlcml0b3JJRC4KICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNzVmMWQ1ZDdmM2Y2ZjQ2OGUwOTFmMjM3MTViZTIyZTcwMmEyZmE3Ni4uMjU1
ZmVjNGVhYjBjMWFjOTc2MjdhZGZmZjcxNjc5NjZiODc3M2UxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xNzEw
LDcgKzE3MTAsNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydFRv
RG91YmxlKEpTVmFsdWVPcGVyYW5kJiBvcCwgRlBSUmVnIHJlcwogICAgIHJldHVybiBub3ROdW1i
ZXI7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2Rl
JiBub2RlLCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVj
aykKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwpAQCAt
MTcyMSw5ICsxNzIxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGUKICAgICBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgCiAgICAgaWYgKCFwcmVk
aWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5j
aGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
dnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihj
bGFzc0luZm8pKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFsc2VDYXNlID0g
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxR1BSLCBvcDJHUFIp
OwogICAgIG1faml0Lm1vdmUoSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMTc4Myw3
ICsxNzgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUmIG5v
ZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3By
KCksIG1fY29tcGlsZUluZGV4KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5kZXgsIHZvaWQqIHZwdHIsIGJv
b2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4IG5vZGVJbmRleCwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5
bG9hZCh0aGlzKTsKQEAgLTE3OTMsNyArMTc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkKiB2
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CiAgICAgaWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBh
eWxvYWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIApAQCAtMTgyMiwxMSArMTgyMiwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRT
cGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewotICAgICAgICBjb21waWxlT2JqZWN0T3JP
dGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFs
T2JqZWN0VlB0ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5h
bE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVj
dE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksIG1faml0Lmdsb2JhbERhdGEoKS0+anNB
cnJheVZQdHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJyYXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSkgewpAQCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxv
YWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXgg
bm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCB2b2lkICp2
cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWtl
biwgQmxvY2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wg
bmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZUluZGV4KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTE4ODEsNyAr
MTg4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5v
ZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgaWYg
KG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZw
dHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXls
b2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCksIHRha2Vu
KTsKICAgICAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTE5MjEsOSArMTkyMSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYgbm9kZSkKIAogICAgICAgICBu
b1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewotICAgICAgICBlbWl0T2Jq
ZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZK
U0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAg
ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCBt
X2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCAmSlNBcnJh
eTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFs
c2U7CkBAIC0yMDk4LDE0ICsyMDk4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2Vs
bC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklU
Q29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9S
ZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQnl0ZUFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRl
QXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5s
b2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CkBAIC0yNjc3LDcgKzI2NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAg
ICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxk
MSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNl
dCgpKSkpOwogICAgICAgICB9CiAKQEAgLTI3OTYsNyArMjc5Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlIGlz
IGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQgd2l0aGluIG1fdmVjdG9y
ICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYgd2UgaGF2ZSBwcmVkaWN0ZWQgdGhl
IGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAgdGhlIGNoZWNrLgogICAgICAgICBp
ZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJh
eVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAg
ICBwcm9wZXJ0eS51c2UoKTsKQEAgLTI5NDAsNyArMjk0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZh
bHVlVGFnR1BSLCBub2RlLmNoaWxkMigpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywg
c3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUik7CiAKICAgICAgICAgaWYgKCFpc0FycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VH
UFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3RvcmFnZUxl
bmd0aEdQUik7CkBAIC0yOTg2LDcgKzI5ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0gc3RvcmFn
ZUxlbmd0aC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZv
KSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9C
SkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIp
OwpAQCAtMzE0OCw3ICszMTQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGFscmVhZHlQcmlt
aXRpdmU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5k
KG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIGFs
cmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVG9QcmltaXRpdmUsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
Uiwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKTsKQEAgLTMyNjksNyArMzI2OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgh
aXNPYmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwodGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BS
KSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmlu
Z1ZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlz
VmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwpAQCAtMzMxNCw3ICszMzE0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAvLyBkbyB0aGUg
c2xvdyAoc3RydWN0dXJlLWJhc2VkKSBjaGVjay4KICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICghaXNG
aW5hbE9iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChwcm90b0dQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3Rv
R1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0ZpbmFsT2JqZWN0VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHByb3RvR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhwcm90b0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwog
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSkpOwpAQCAtMzQ4Niw3ICszNDg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJh
eVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHJlc3VsdEdQUik7CkBAIC0zNTA1LDcgKzM1MDUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzU3RyaW5n
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNT
dHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJl
c3VsdEdQUik7CiAKQEAgLTM1MjEsNyArMzUyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZv
KSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
Qnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5N2I1MTJhZTQ2
MGUzYjEwOTA2NzBiMzAxMTQ3MTJiNDFlYWYyYzg2Li5kNzg3ODZlMjYzZmExYWNjNDlhYzcwMTkz
MGZlYzNmYTZlZjhkY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE3MzcsNyArMTczNyw3IEBAIEpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcg
cmVzdWx0LCBHCiAgICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rp
b25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJl
ZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CkBAIC0xNzQ4LDkgKzE3NDgsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCogdnB0ciwg
UHJlZGljdGlvbkNoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
b3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihj
bGFzc0luZm8pKSk7CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3Mob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZmFsc2VDYXNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3Ax
R1BSLCBvcDJHUFIpOwogICAgIG1faml0Lm1vdmUoSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BS
KTsKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUFkZChOb2RlJiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVj
dWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJM
b2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
LCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGVJbmRleCk7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTE4
MTcsNyArMTgxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkICp2CiAgICAgCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlm
IChuZWVkU3BlY3VsYXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlc3VsdEdQUik7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKQEAgLTE4NDgsMTEgKzE4
NDgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9k
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVj
dE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksIG1faml0Lmdsb2JhbERhdGEoKS0+anNG
aW5hbE9iamVjdFZQdHIsICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JP
dGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlz
RmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7Ci0gICAgICAgIGNvbXBpbGVP
YmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCBtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzQXJyYXlWUHRyLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dp
Y2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnRlZ2VyKCkpIHsKQEAgLTE5MTIsNyArMTkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUmIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRH
UFIsIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaChOb2RlSW5kZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4
IG5vdFRha2VuLCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRl
eCwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBhZGRCcmFuY2gobV9q
aXQuanVtcCgpLCB0YWtlbik7CiAgICAgCiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC0x
OTYxLDkgKzE5NjEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUmIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBl
bHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3Ro
ZXIoKSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0
YWtlbiwgbm90VGFrZW4sIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFp
c0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxk
MSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2Jq
ZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJy
YXlPck90aGVyKCkpIHsKLSAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGls
ZDEoKSwgdGFrZW4sIG5vdFRha2VuLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAh
aXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKTsKKyAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwg
dGFrZW4sIG5vdFRha2VuLCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2Ug
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CkBAIC0yMTMxLDE0ICsyMTMxLDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAg
ICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlz
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQot
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhj
ZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2lu
Zm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRp
Y3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBj
ZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhjZWxsR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGNlbGxH
UFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2lu
Zm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CkBAIC0yNjgwLDcgKzI2ODAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3MoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVn
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxl
bmd0aE9mZnNldCgpKSkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJbiBjYXNlcyB3aGVyZSB0aGVy
ZSBhcmUgc3Vic2VxdWVudCBieV92YWwgYWNjZXNzZXMgdG8gdGhlIHNhbWUgYmFzZSBpdCBtaWdo
dCBoZWxwIHRvIGNhY2hlCkBAIC0yNzkxLDcgKzI3OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBh
cnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBt
X3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNl
IHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lwIHRoZSBjaGVjay4KICAgICAgICAgaWYgKCFp
c0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKICAgICAgICAgcHJvcGVydHkudXNlKCk7CkBAIC0yOTM1LDcgKzI5MzUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIHdy
aXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgbm9kZS5jaGlsZDIoKSwgV3JpdGVCYXJyaWVy
Rm9yUHJvcGVydHlBY2Nlc3MsIHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIpOwogCiAgICAg
ICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkp
OwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVD
VF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpA
QCAtMjk3OCw3ICsyOTc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICBHUFJSZWcgc3RvcmFnZUxlbmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3By
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwg
c3RvcmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBz
dG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTMxMjEsNyArMzEyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBhbHJlYWR5UHJpbWl0aXZlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5
UHJpbWl0aXZlLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgYWxy
ZWFkeVByaW1pdGl2ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAg
ICBhbHJlYWR5UHJpbWl0aXZlLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5m
bykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9QcmltaXRp
dmUsIHJlc3VsdEdQUiwgb3AxR1BSKTsKQEAgLTMyMzEsNyArMzIzMSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghaXNPYmpl
Y3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGhpc1Zh
bHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSKSwgSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRD
b21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUik7
CiAgICAgICAgICAgICAKQEAgLTMyNzUsNyArMzI3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gZG8gdGhlIHNsb3cgKHN0cnVjdHVyZS1i
YXNlZCkgY2hlY2suCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVGaW5hbE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzRmluYWxPYmplY3RQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocHJvdG9HUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhwcm90b0dQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTRmluYWxPYmplY3Q6OnNfaW5mbykp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2g4KE1hY3Jv
QXNzZW1ibGVyOjpCZWxvdywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoT2JqZWN0VHlwZSkpKTsKQEAgLTM0MzgsNyArMzQzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkp
LCByZXN1bHRHUFIpOwpAQCAtMzQ1Nyw3ICszNDU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCByZXN1bHRHUFIpOwogCkBAIC0zNDczLDcgKzM0NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNCeXRlQXJy
YXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXpl
KCkpLCByZXN1bHRHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAwNmMw
YWZkZDNlZjRkMTA4MjFiMTA2YmMyM2I3M2JhZjFhMDY3NmMwLi42MWViYTA4YTQ5YzY2ZmU5MjM2
M2M1MDdhNjMxOWM5N2Q4YzcxODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApA
QCAtMzE5LDcgKzMxOSw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBI
ZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMp
CiAgICAgLCBtX3NoYXJlZERhdGEoZ2xvYmFsRGF0YSkKLSAgICAsIG1fc2xvdFZpc2l0b3IobV9z
aGFyZWREYXRhLCBnbG9iYWxEYXRhLT5qc0FycmF5VlB0ciwgZ2xvYmFsRGF0YS0+anNGaW5hbE9i
amVjdFZQdHIsIGdsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikKKyAgICAsIG1fc2xvdFZpc2l0b3Io
bV9zaGFyZWREYXRhKQogICAgICwgbV9oYW5kbGVIZWFwKGdsb2JhbERhdGEpCiAgICAgLCBtX2lz
U2FmZVRvQ29sbGVjdChmYWxzZSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggM2Y0ZmRhNzZjYzRlMzcx
Zjc0ZDZkY2M3MzVjOWI5Mzg0NjNlZjlkNS4uMjg5YzU0MTJmOTUxOWIwMTJmYjc3ZDE2NDlmZWE0
ZWZjZmUzYmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9t
KE1hcmtTdGFja0FycmF5JiBvdGhlcikKIHZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6
bWFya2luZ1RocmVhZE1haW4oKQogewogICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZCgpOwotICAg
IFNsb3RWaXNpdG9yIHNsb3RWaXNpdG9yKCp0aGlzLCBtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRy
LCBtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RWUHRyLCBtX2dsb2JhbERhdGEtPmpzU3RyaW5n
VlB0cik7CisgICAgU2xvdFZpc2l0b3Igc2xvdFZpc2l0b3IoKnRoaXMpOwogICAgIFBhcmFsbGVs
TW9kZUVuYWJsZXIgZW5hYmxlcihzbG90VmlzaXRvcik7CiAgICAgc2xvdFZpc2l0b3IuZHJhaW5G
cm9tU2hhcmVkKFNsb3RWaXNpdG9yOjpTbGF2ZURyYWluKTsKIH0KQEAgLTI5NCw3ICsyOTQsNyBA
QCB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVS
b290cykKICAgICAgICAgaW50ZXJuYWxBcHBlbmQocm9vdHNbaV0pOwogfQogCi1BTFdBWVNfSU5M
SU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0
IEpTQ2VsbCogY2VsbCwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzQXJyYXlWUHRy
LCB2b2lkKiBqc1N0cmluZ1ZQdHIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IEpTQ2VsbCogY2VsbCkKIHsKICNpZiBF
TkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291
bnQoY2VsbCk7CkBAIC0zMDIsMTcgKzMwMiwxNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IEpTQ2VsbCogY2VsbAog
CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKIAotICAgIGlmIChjZWxsLT52cHRy
KCkgPT0ganNTdHJpbmdWUHRyKSB7CisgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsKICAgICAg
ICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlz
aXRvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY2VsbC0+dnB0cigpID09
IGpzRmluYWxPYmplY3RWUHRyKSB7CisgICAgaWYgKGlzSlNGaW5hbE9iamVjdChjZWxsKSkgewog
ICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwp
LCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjZWxsLT52cHRy
KCkgPT0ganNBcnJheVZQdHIpIHsKKyAgICBpZiAoaXNKU0FycmF5KGNlbGwpKSB7CiAgICAgICAg
IEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzgsMTYgKzMzOCwxMiBAQCB2b2lkIFNs
b3RWaXNpdG9yOjpkcmFpbigpCiB7CiAgICAgQVNTRVJUKG1faXNJblBhcmFsbGVsTW9kZSk7CiAg
ICAgCi0gICAgdm9pZCoganNGaW5hbE9iamVjdFZQdHIgPSBtX2pzRmluYWxPYmplY3RWUHRyOwot
ICAgIHZvaWQqIGpzQXJyYXlWUHRyID0gbV9qc0FycmF5VlB0cjsKLSAgICB2b2lkKiBqc1N0cmlu
Z1ZQdHIgPSBtX2pzU3RyaW5nVlB0cjsKLQogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKICAgICBp
ZiAoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CiAgICAgICAgIHdoaWxlICgh
bV9zdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhldXJpc3RpY3M6Om1pbmltdW1OdW1i
ZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkgJiYgY291
bnRkb3duLS07KQotICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2su
cmVtb3ZlTGFzdCgpLCBqc0ZpbmFsT2JqZWN0VlB0ciwganNBcnJheVZQdHIsIGpzU3RyaW5nVlB0
cik7CisgICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVM
YXN0KCkpOwogICAgICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMzU5LDcgKzM1NSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKICAg
ICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7
CiAgICAgICAgIHdoaWxlIChtX3N0YWNrLmNhblJlbW92ZUxhc3QoKSkKLSAgICAgICAgICAgIHZp
c2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3ZlTGFzdCgpLCBqc0ZpbmFsT2JqZWN0VlB0
ciwganNBcnJheVZQdHIsIGpzU3RyaW5nVlB0cik7CisgICAgICAgICAgICB2aXNpdENoaWxkcmVu
KCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5oCmluZGV4IGM1MDgwMTk0ODg3MDE5YzlhOGNkNDhiMzczNzc2
ZDhhOGY5NzhkYTcuLjAzZGVlYWI4NzliZDIxMjczZmIwMWI0ZDczODE0ZTlhMTIwY2JlODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBAIC0yMDQsNyArMjA0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7IC8v
IEFsbG93ZWQgdG8gbWFyayBhIEpTVmFsdWUqIG9yIEpTQ2VsbCoqIGRpcmVjdGx5LgogCiAgICAg
cHVibGljOgotICAgICAgICBNYXJrU3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYsIHZv
aWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciwgdm9pZCoganNTdHJpbmdW
UHRyKTsKKyAgICAgICAgTWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmKTsKICAg
ICAgICAgfk1hcmtTdGFjaygpOwogCiAgICAgICAgIHZvaWQgYXBwZW5kKENvbnNlcnZhdGl2ZVJv
b3RzJik7CkBAIC0yNjcsOSArMjY3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIE1hcmtTdGFja0FycmF5IG1fc3RhY2s7Ci0gICAgICAgIHZvaWQqIG1f
anNBcnJheVZQdHI7Ci0gICAgICAgIHZvaWQqIG1fanNGaW5hbE9iamVjdFZQdHI7Ci0gICAgICAg
IHZvaWQqIG1fanNTdHJpbmdWUHRyOwogICAgICAgICBIYXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJv
b3RzOyAvLyBIYW5kbGUtb3duaW5nIGRhdGEgc3RydWN0dXJlcyBub3QgdmlzaWJsZSB0byB0aGUg
Z2FyYmFnZSBjb2xsZWN0b3IuCiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTI4
NiwxMSArMjgzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtTdGFja1RocmVhZFNo
YXJlZERhdGEmIG1fc2hhcmVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgTWFya1N0YWNrOjpNYXJr
U3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkLCB2b2lkKiBqc0FycmF5VlB0
ciwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0cikKKyAgICBpbmxp
bmUgTWFya1N0YWNrOjpNYXJrU3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVk
KQogICAgICAgICA6IG1fc3RhY2soc2hhcmVkLm1fc2VnbWVudEFsbG9jYXRvcikKLSAgICAgICAg
LCBtX2pzQXJyYXlWUHRyKGpzQXJyYXlWUHRyKQotICAgICAgICAsIG1fanNGaW5hbE9iamVjdFZQ
dHIoanNGaW5hbE9iamVjdFZQdHIpCi0gICAgICAgICwgbV9qc1N0cmluZ1ZQdHIoanNTdHJpbmdW
UHRyKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLCBtX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX2lzRHJhaW5pbmcoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKaW5kZXggZDZmYjg1M2Ex
YzkwNDZhZjI3Mzk0N2NlODVhMWYzNWQ1N2QwNzZmNy4uZjI1MjlmZDRlZmQ0NDU3ZjAzMjEzZDdk
NGY1Zjc4NWI2NjhlZWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcApAQCAtNjAsMTggKzYwLDE3IEBAIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhjb25z
dCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIEhlYXAqIGhlYXAsIHNpCiAgICAg
SEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKIH0KIAotaW5saW5lIHZvaWQg
TWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCwgdm9pZCoganNGaW5hbE9i
amVjdFZQdHIpCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IoSlNDZWxs
KiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIgc3dlZXAgbWF5IGFscmVhZHkgaGF2
ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCiAgICAgaWYgKGNlbGwtPmlzWmFwcGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHZvaWQqIHZwdHIgPSBjZWxsLT52cHRyKCk7CiAjaWYgRU5BQkxF
KFNJTVBMRV9IRUFQX1BST0ZJTElORykKICAgICBtX2hlYXAtPm1fZGVzdHJveWVkVHlwZUNvdW50
cy5jb3VudFZQdHIodnB0cik7CiAjZW5kaWYKLSAgICBpZiAodnB0ciAhPSBqc0ZpbmFsT2JqZWN0
VlB0cikKLSAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOworICAgIGlmIChjZWxsLT5jbGFzc0luZm8o
KSAhPSAmSlNGaW5hbE9iamVjdDo6c19pbmZvKQorICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgp
LT5kZXN0cm95KGNlbGwpOwogCiAgICAgY2VsbC0+emFwKCk7CiB9CkBAIC04NSw3ICs4NCw2IEBA
IE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQog
ICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29kZSBtYWtlcyBubyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUKICAgICAvLyBvcmRlciBvZiB0aGUgZnJlZSBsaXN0LgogICAg
IEZyZWVDZWxsKiBoZWFkID0gMDsKLSAgICB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciA9IG1faGVh
cC0+Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cjsKICAgICBmb3IgKHNpemVfdCBpID0g
Zmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKICAgICAg
ICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkICYmIG1fbWFya3MuZ2V0KGkpKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC05NSw3ICs5Myw3IEBAIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogTWFy
a2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKGJsb2NrU3RhdGUgIT0gTmV3KQotICAgICAgICAgICAgY2FsbERlc3RydWN0b3Io
Y2VsbCwganNGaW5hbE9iamVjdFZQdHIpOworICAgICAgICAgICAgY2FsbERlc3RydWN0b3IoY2Vs
bCk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKICAgICAg
ICAgICAgIEZyZWVDZWxsKiBmcmVlQ2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnJlZUNlbGwqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGFkYzY1
NzI2NDIwNzFhZjNlNzE3Y2FiNmM4YWZmY2ZlY2ZiMzc3NGEuLjhjNjY1ZGQ1YmVkNWIyNDEzZGQz
MDIxN2ZmNzRlNDAwN2FmMWM5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaApAQCAtMTY1LDcgKzE2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJr
ZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBIZWFwKiwgc2l6ZV90IGNlbGxT
aXplKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIo
Y29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQq
IGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwq
KTsKICAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlPiBGcmVlQ2VsbCogc3Bl
Y2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAKICNpZiBFTkFCTEUoR0dDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKaW5kZXggYTQ2MTc4MTRhZTdlMmY2OGFiMzI0ODll
ZTllY2VhNWFlYjhjNjYxMi4uYmIzMDFmYmYxOWM4NTUzNDdmOThmZjljYzMzZDExMzM0NGNkMzgz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBTbG90VmlzaXRvciA6IHB1YmxpYyBNYXJrU3RhY2sg
ewogICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7CiBwdWJsaWM6Ci0gICAgU2xvdFZp
c2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lk
KiBqc0ZpbmFsT2JqZWN0VlB0ciwgdm9pZCoganNTdHJpbmdWUHRyKTsKKyAgICBTbG90VmlzaXRv
cihNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJik7CiAKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAg
ewpAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWlubGluZSBTbG90Vmlz
aXRvcjo6U2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkLCB2b2lk
KiBqc0FycmF5VlB0ciwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0
cikKLSAgICA6IE1hcmtTdGFjayhzaGFyZWQsIGpzQXJyYXlWUHRyLCBqc0ZpbmFsT2JqZWN0VlB0
ciwganNTdHJpbmdWUHRyKQoraW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCisgICAgOiBNYXJrU3RhY2soc2hhcmVkKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAKaW5k
ZXggYjk4ZDFhNTExNzU4NzYwZTA2MGFkZDdlOTE1NGIyOTFkYmVmYWIxNC4uYWNiNDk0MDM0ZmE4
YmQ3N2QwMjI3NzExNzQ3YmUwNTNkY2UxMTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcApAQCAtNTQsNyArNTQsOCBAQCB2b2lkIFZUYWJsZVNw
ZWN0cnVtOjpjb3VudFZQdHIodm9pZCogdlRhYmxlUG9pbnRlcikKIAogdm9pZCBWVGFibGVTcGVj
dHJ1bTo6Y291bnQoSlNDZWxsKiBjZWxsKQogewotICAgIGNvdW50VlB0cihjZWxsLT52cHRyKCkp
OworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNoYW5nZSB0aGlzIGNsYXNzIHRvIGNvdW50IENs
YXNzSW5mb3MgcmF0aGVyIHRoYW4gdnB0cnMKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CiB9CiAK
IHZvaWQgVlRhYmxlU3BlY3RydW06OmR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21t
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggNDliZmRkMDRmMzBjMjBjNTdiM2M1NzJhMzUwYmI5MzRmOGY4NDNkMi4uY2Rh
ZmM4M2QxYjQxNjZmN2U1ZTAwZjA5NTc2MTY5YjYyZDE0NTRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MDYsNyArNTA2
LDcgQEAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGUsIEpTVmFsdWUKICAgICAgICAgcmV0dXJuIG5ld0NhbGxGcmFt
ZTsKICAgICB9CiAKLSAgICBpZiAoaXNKU0FycmF5KCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
YXJndW1lbnRzKSkgeworICAgIGlmIChpc0pTQXJyYXkoYXJndW1lbnRzKSkgewogICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGFzQXJyYXkoYXJndW1lbnRzKTsKICAgICAgICAgdW5zaWduZWQgYXJn
Q291bnQgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJl
Z2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CkBAIC0xNTA4LDEz
ICsxNTA4LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKTsKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVy
dHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChp
c0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9nZXRfYXJy
YXlfbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc0pTU3RyaW5n
KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYg
cHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAg
ICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X3N0cmluZ19sZW5ndGgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMzIxOCw3ICszMjE3LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
IAogICAgICAgICBpbnQgYmFzZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKExJ
S0VMWShpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkpIHsKKyAgICAgICAgaWYgKExJ
S0VMWShpc0pTQXJyYXkoYmFzZVZhbHVlKSkpIHsKICAgICAgICAgICAgIGludCBkc3QgPSB2UENb
MV0udS5vcGVyYW5kOwogICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBq
c051bWJlcihhc0FycmF5KGJhc2VWYWx1ZSktPmxlbmd0aCgpKTsKICAgICAgICAgICAgIHZQQyAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9hcnJheV9sZW5ndGgpOwpAQCAtMzI0Miw3ICszMjQxLDcg
QEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpbnQgYmFzZSA9IHZQQ1syXS51Lm9w
ZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpz
VmFsdWUoKTsKLSAgICAgICAgaWYgKExJS0VMWShpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VW
YWx1ZSkpKSB7CisgICAgICAgIGlmIChMSUtFTFkoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSkgewog
ICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjYWxs
RnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmxl
bmd0aCgpKTsKICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9zdHJpbmdf
bGVuZ3RoKTsKQEAgLTM1MTEsMTUgKzM1MTAsMTUgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAog
ICAgICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICAgICAgaWYgKGlzSlNB
cnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJh
eShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5HZXRJbmRleChp
KSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNBcnJheS0+Z2V0SW5kZXgoaSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0FycmF5
LT5KU0FycmF5OjpnZXQoY2FsbEZyYW1lLCBpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNK
U1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNh
bkdldEluZGV4KGkpKQorICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVl
KSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc0J5
dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChjYWxsRnJhbWUsIGkpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoY2FsbEZyYW1lLCBp
KTsKQEAgLTM1NTMsMTMgKzM1NTIsMTMgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAgICAgdWludDMy
X3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICAgICAgaWYgKGlzSlNBcnJheShn
bG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VW
YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNl
VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKICAg
ICAgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGksIGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGpzQXJyYXktPkpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgY2FsbEZy
YW1lLCBpLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJy
YXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNW
YWx1ZSA9IGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlm
IChqc1ZhbHVlLmlzSW50MzIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGY4M2E3NTk0
OWY2Nzk5MzAwZTJmNzFhNjI0MDM0YWQxOGQ0MGE1OTEuLmU2NGU2OTBmZTc4Yjc5ODAxNjU3YTg3
ZDEyYTdmYTRkNDVhZjIxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzI5LDcgKzMy
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoUmVn
aXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCBzY3JhdGNoLCBS
ZWdpc3RlcklEIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5k
KTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIFJlZ2lzdGVy
SUQgdmFsdWUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyTW9kZSwgV3JpdGVCYXJy
aWVyVXNlS2luZCk7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBl
bmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0
dXJlVHlwZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9y
YWdlUHRyKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBT
dHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlw
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVj
dHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAg
IHZvaWQgZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5jdGlvbkV4ZWN1dGFibGUqLCBSZWdpc3Rl
cklEIHNjb3BlQ2hhaW4sIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIp
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgKaW5kZXggZWZlNzA4MDlmOTI4NzI4MWJkNzUyMWVlNjA1NmRlZDM3YTE1ZTc4OS4uZjQ4NTE1
N2UzODY0YmU2ZWI3YTdkMDE1MTc2YTFkOTE1NDU3NjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAgLTg0LDcgKzg0LDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxl
OjpDYWxsRnJhbWVIZWEKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdExvYWRDaGFyYWN0
ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0LCBKdW1wTGlzdCYgZmFpbHVy
ZXMpCiB7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhz
cmMpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGZh
aWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAg
ICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKDEpKSk7CiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5r
SGVscGVyczo6anNTdHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBl
bmQoYnJhbmNoVGVzdDMyKFplcm8sIGRzdCkpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcih1bnNpZ25lZCBz
cmMpCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMp
ICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0Q29u
c3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUs
IHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlu
bGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0
cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKIHsKICAg
ICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRhLT5oZWFw
LnNpemVDbGFzc0Zvck9iamVjdChzaXplb2YoQ2xhc3NUeXBlKSk7CiAgICAgbG9hZFB0cigmc2l6
ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZXN1bHQpOwpAQCAtNDA5LDEyICs0MDksMTIgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5l
IHZvaWQgSklUOjplbWl0QWxsb2MKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc3RvcmFn
ZVB0cik7CiAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2Vs
bCk7CiAKLSAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyB2dGFibGUKLSAgICBzdG9yZVB0
cihUcnVzdGVkSW1tUHRyKHZ0YWJsZSksIEFkZHJlc3MocmVzdWx0KSk7Ci0KICAgICAvLyBpbml0
aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUKICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIEFk
ZHJlc3MocmVzdWx0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAKKyAgICAvLyBpbml0
aWFsaXplIHRoZSBvYmplY3QncyBjbGFzc0luZm8gcG9pbnRlcgorICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoJkNsYXNzVHlwZTo6c19pbmZvKSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKTsKKwogICAgIC8vIGluaXRpYWxpemUgdGhlIGluaGVyaXRvciBJRAog
ICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKQEAgLTQyNSwxMiArNDI1LDEyIEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lk
IEpJVDo6ZW1pdEFsbG9jCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0
LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7Ci0gICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxK
U0ZpbmFsT2JqZWN0PihzdHJ1Y3R1cmUsIG1fZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVjdFZQdHIs
IHJlc3VsdCwgc2NyYXRjaCk7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0ZpbmFs
T2JqZWN0PihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7CiB9CiAKIGlubGluZSB2b2lkIEpJ
VDo6ZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3Rv
cmFnZVB0cikKIHsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRnVuY3Rpb24+KFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5uYW1lZEZ1bmN0aW9uU3Ry
dWN0dXJlKCkpLCBtX2dsb2JhbERhdGEtPmpzRnVuY3Rpb25WUHRyLCByZXN1bHQsIHN0b3JhZ2VQ
dHIpOworICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGdW5jdGlvbj4oVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPm5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUo
KSksIHJlc3VsdCwgc3RvcmFnZVB0cik7CiAKICAgICAvLyBzdG9yZSB0aGUgZnVuY3Rpb24ncyBz
Y29wZSBjaGFpbgogICAgIHN0b3JlUHRyKHNjb3BlQ2hhaW4sIEFkZHJlc3MocmVzdWx0LCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKaW5kZXggNzA1NGI1MzQxNTY0NzQ5NmUwNzFmYWFkNmNiOWFjZTg0MDUy
MDNmYS4uZjViZTI3OWE2MjljM2UxZmM2ZDU2MmU0OWFhYjNmYWVhMDg0NTk1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFBhc3NS
ZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hp
bmVUcmFtcG9saW5lcyhKU0dsCiAKICAgICAvLyBDaGVjayBlYXggaXMgYSBzdHJpbmcKICAgICBK
dW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMxID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0g
ICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKTsKKyAg
ICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJp
bmc6OnNfaW5mbykpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3Ro
IGZyb20gdGhlIFVzdHJpbmcuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZT
RVRPRihKU1N0cmluZywgbV9sZW5ndGgpKSwgcmVnVDApOwpAQCAtNTc5LDcgKzU3OSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAgICAgCiAgICAg
SnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZElt
bVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAg
aWYgKGRzdCAhPSBzcmMpCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
b252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KCZKU1N0cmluZzo6c19pbmZvKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMGNlYTQ5ZTgyZjMyZGZhMzAyM2NlNjFj
MmJkZWIyNjVmN2ZhYjYwNS4uNTljNDJiOGQ2MDUxNmRkYmVkM2RjOTljNmJjZDFjY2MxN2EyMTQx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApA
QCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbAogICAgIC8vIHJlZ1QwIGhv
bGRzIHBheWxvYWQsIHJlZ1QxIGhvbGRzIHRhZwogCiAgICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNh
c2VzMSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5n
VlB0cikpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0
IHRoZSBsZW5ndGggZnJvbSB0aGUgVXN0cmluZy4KICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCkpLCByZWdUMik7CkBAIC02NzEsNyAr
NjcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAg
SnVtcCBpc0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7
CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtOTYzLDgg
Kzk2Myw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5q
c1N0cmluZ1ZQdHIpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4K
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5n
cyk7CkBAIC0xMDExLDggKzEwMTEsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5PgogICAgIGdl
bmVyaWNDYXNlLmFwcGVuZChnZXRTbG93Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdl
bmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwotICAgIGdlbmVyaWNDYXNl
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIpLCBUcnVzdGVkSW1tUHRy
KG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOworICAgIGdlbmVyaWNDYXNl
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogCiAgICAg
Ly8gU3RyaW5nIGNhc2UuCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGxFcVN0cmluZ3ModGhpcywg
Y3RpX29wX2VxX3N0cmluZ3MpOwpAQCAtMTA0OCw4ICsxMDQ4LDggQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0
cmljdEVxVHkKIAogICAgIC8vIEp1bXAgdG8gYSBzbG93IGNhc2UgaWYgYm90aCBhcmUgc3RyaW5n
cy4KICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgSnVtcCBmaXJzdE5vdFN0cmluZyA9IGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRh
LT5qc1N0cmluZ1ZQdHIpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJl
c3MocmVnVDIpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6
c19pbmZvKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpKTsKICAgICBub3RDZWxsLmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGlu
ayh0aGlzKTsKIApAQCAtMTUyNCw3ICsxNTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVy
dF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQodGhp
c1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCAr
IE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSwgdGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVn
VDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCA2NzE3YTEwYmNiYzc4ZjJiNTRhMzIxODM2NGE3YWRjZDZjYmM2MzFkLi40ODk1
MWU4NzkzNGIwNGMwMjQ1ZjMwODFiYTgzODkzNTk0ZTIyODc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBK
SVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdDsKICAgICBKdW1wTGlzdCBm
YWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIoZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5kIHN0YXJ0
IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAg
aml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zm
c2V0KCkpLCByZWdUMik7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHplcm9FeHRlbmQz
MlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIGJhc2UpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5VlB0cikpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJl
Z1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRy
ZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlND
ZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5vbkNlbGwgPSBq
dW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAg
SnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSk7CisgICAgSnVtcCBub3RTdHJp
bmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAgICAgZW1pdE5h
a2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbChtX2dsb2JhbERhdGEtPmdldENUSVN0dWIoc3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5j
aFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBy
ZWdUMCk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNlZSBjb21tZW50IGluIG9w
X2dldF9ieV92YWwuCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc0FycmF5VlB0cikpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0
KCkpKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHJlZ1QyKTsKQEAgLTU1OSw2ICs1NTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVy
ZQogICAgIC8vIGFuIHVuY29uZGl0aW9uYWwgYmFycmllciBoZXJlLgogICAgIGVtaXRXcml0ZUJh
cnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAorICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpID09IG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwogICAgIHN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogICAgIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQocmVnVDAs
IHJlZ1QxLCBjYWNoZWRPZmZzZXQpOwogCkBAIC02MTgsNyArNjE5LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gJm1fY29kZUJsb2NrLT5n
ZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBhcnJh
eQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5VlB0cikpOworICAgIEp1
bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykp
OwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIHN0
b3JhZ2UKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQo
KSksIHJlZ1QzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGZlYWY4Yjg5ZGU5NDRlZTQxNmM3YTgzZDIyMzc4NGMw
YjlkZDc0MjAuLmI3M2Q3YWI3NTE2MjIxNWEzM2Q3MzVjZWU5N2Y5N2JhM2Q3ZmIyYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFs
U3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OwogICAgIEp1bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChq
aXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihnbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgIAogICAgIC8vIExvYWQgc3Ry
aW5nIGxlbmd0aCB0byByZWdUMSwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhl
IGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBU
aHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMSk7CkBAIC0yMTksNyAr
MjE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpz
QXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogCiAg
ICAgSnVtcCBub25DZWxsID0ganVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFz
ZSBhcnJheSBjaGVjawotICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikp
OworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpOwogICAgIGVtaXROYWtlZENhbGwobV9nbG9iYWxEYXRhLT5nZXRDVElTdHViKHN0cmlu
Z0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5j
aFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7
CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2ds
b2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMSwgcmVn
VDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNj
ZXNzKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAvLyByZWdU
MCBob2xkcyBhIEpTQ2VsbCoKICAgICAKICAgICAvLyBDaGVjayBmb3IgYXJyYXkKLSAgICBKdW1w
IGZhaWx1cmVDYXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKTsKKyAgICBKdW1wIGZhaWx1cmVD
YXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICAKICAg
ICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVn
VDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA0MTM2MTRlOTQ2
MGU5ZGM1ZTc1MGI0ZTA0MWU5Njc0MGQwZWM5N2U0Li45ZWIzOGUwZDY0OTgwZWZmY2I2Nzc3ODIy
MjUzZDViZTliNDk5YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApA
QCAtODc1LDEyICs4NzUsMTIgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICAKICAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CiAKLSAg
ICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09
IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChpc0pTQXJyYXko
YmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CiAgICAgICAgIEpJVDo6Y29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoY2FsbEZy
YW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNvZGVCbG9jaywgcmV0dXJuQWRkcmVzcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFs
RGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKSB7CisgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0
eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIC8v
IFRoZSB0cmFkZW9mZiBvZiBjb21waWxpbmcgYW4gcGF0Y2hlZCBpbmxpbmUgc3RyaW5nIGxlbmd0
aCBhY2Nlc3Mgcm91dGluZSBkb2VzIG5vdCBzZWVtCiAgICAgICAgIC8vIHRvIHBheSBvZmYsIHNv
IHdlIGN1cnJlbnRseSBvbmx5IGRvIHRoaXMgZm9yIGFycmF5cy4KICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgcmV0dXJuQWRkcmVzcywgZ2xvYmFsRGF0YS0+
aml0U3R1YnMtPmN0aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUoKSk7CkBAIC0yNDc4LDcgKzI0Nzgs
NiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X3ZhbCkK
ICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBAIC0yNDkyLDEzICsyNDkxLDEzIEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsKQogCiAgICAg
aWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3Jp
cHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZh
bHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgeworICAgICAgICBp
ZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKSB7CiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZy
YW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29w
X2dldF9ieV92YWxfc3RyaW5nKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGFzU3Ry
aW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgICAgICBDSEVD
S19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwg
YmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkg
eworICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CiAgICAgICAgICAgICAvLyBBbGwgZmFzdCBi
eXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZlIGZyb20gZXhjZXB0aW9ucyBzbyByZXR1cm4gaW1t
ZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9uIGNoZWNrcy4KICAgICAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9B
RERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbF9ieXRlX2FycmF5KSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdl
dEluZGV4KGNhbGxGcmFtZSwgaSkpOwpAQCAtMjUxOSw3ICsyNTE4LDYgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92YWxfc3RyaW5nKQogICAgIFNUVUJf
SU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICAKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBz
dGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwpAQCAtMjUyOCwxMSArMjUyNiwxMSBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X3ZhbF9zdHJpbmcpCiAg
ICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWlu
dDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAoaXNKU1N0cmluZyhn
bG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4
KGkpKQorICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VW
YWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgcmVzdWx0ID0gYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGNhbGxGcmFtZSwgaSk7Ci0gICAgICAgICAgICBp
ZiAoIWlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkKKyAgICAgICAgICAgIGlmICgh
aXNKU1N0cmluZyhiYXNlVmFsdWUpKQogICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBG
dW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
QEAgLTI1NDksNyArMjU0Nyw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVl
LCBvcF9nZXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9i
YWxEYXRhOwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCk7CkBAIC0yNTU4LDEzICsyNTU1LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAKICAgICBpZiAoTElLRUxZ
KHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0
LmFzVUludDMyKCk7Ci0gICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAg
ICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAgICAgLy8gQWxsIGZhc3QgYnl0ZSBh
cnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlvbnMgc28gcmV0dXJuIGltbWVkaWF0
ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGNhbGxGcmFtZSwgaSkp
OwogICAgICAgICB9CiAKICAgICAgICAgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChjYWxsRnJhbWUs
IGkpOwotICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkK
KyAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkpCiAgICAgICAgICAgICBjdGlQ
YXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRV
Uk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV92YWwpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRvU3Ry
aW5nKGNhbGxGcmFtZSkpOwpAQCAtMjYwNCwxMyArMjYwMSwxMyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcF9wdXRfYnlfdmFsKQogCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNV
SW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwot
ICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAgICAgICAg
aWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5
ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldElu
ZGV4KGkpKQogICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KCpnbG9iYWxEYXRhLCBp
LCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0
QnlJbmRleChqc0FycmF5LCBjYWxsRnJhbWUsIGksIHZhbHVlKTsKLSAgICAgICAgfSBlbHNlIGlm
IChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5k
ZXgoaSkpIHsKICAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIo
Y3RpX29wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkpOwogICAgICAgICAgICAgLy8gQWxsIGZhc3Qg
Ynl0ZSBhcnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlvbnMgc28gcmV0dXJuIGlt
bWVkaWF0ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCkBAIC0yNjQzLDcgKzI2NDAsNiBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAg
ICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogICAgIAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwogICAgIAogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBAIC0yNjUxLDcgKzI2NDcsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAg
ICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWlu
dDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAoaXNKU0J5dGVBcnJh
eShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFj
Y2Vzc0luZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYg
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAg
IEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIEFsbCBmYXN0IGJ5dGUgYXJyYXkgYWNjZXNzZXMgYXJl
IHNhZmUgZnJvbSBleGNlcHRpb25zIHNvIHJldHVybiBpbW1lZGlhdGVseSB0byBhdm9pZCBleGNl
cHRpb24gY2hlY2tzLgpAQCAtMjY2Niw3ICsyNjYyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpCisg
ICAgICAgIGlmICghaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpKQogICAgICAgICAgICAgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIFNUVUJfUkVUVVJO
X0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9wdXRfYnlfdmFsKSk7CiAgICAgICAgIGJhc2VW
YWx1ZS5wdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTM0MzMsNyAr
MzQyOSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9pc19zdHJp
bmcpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNKU1N0cmluZyhzdGFja0ZyYW1lLmdsb2Jh
bERhdGEsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oaXNKU1N0cmluZyhzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1
ZSgpKSkpOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfaXNf
b2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAppbmRleCBlY2M0OTFlODdiMTE2NzdmYzllOTE4MjE1MTYzOTRmODc1ZmNhNjUwLi5hYjc4
ZWFhOTk3MjU0ZDk4NjY4MDU4MDU1ZmY2NzJjMjFlNDQ5ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtNjAsNyArNjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkSlNTdHJpbmdBcmd1bWVudChpbnQgYXJn
dW1lbnQsIFJlZ2lzdGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFy
Z3VtZW50KGFyZ3VtZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGRzdCwgMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQg
ZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA5ODM2YTEyMDdmY2NhYmZjZGRiZWMzYzg1
MGQ1NjU0MDYwNTBmMDIwLi5kMTE5NWZiZjQ1MTc4OWViZjhhOTQ0ZWFmOWMxYmI2OWZmYmUzM2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcApAQCAtNDEsNiArNDEsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEFycmF5Q29uc3RydWN0b3IpOwor
CiBjb25zdCBDbGFzc0luZm8gQXJyYXlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0
b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUNvbnN0cnVjdG9yKSB9OwogCiAvKiBT
b3VyY2UgZm9yIEFycmF5Q29uc3RydWN0b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiNzg0NDEzYWY4ZWI0ZWNkYmJi
YmMzM2E2Yzk1NjkwMDMzYTA5YmMwLi5kOGQxNGYzNGZmMjYwZjdhZDc3MDVmOTQ1ZTJiMzA0OTNk
Y2EzYzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKIAotICAgIGJvb2wgaXNSZWFsQXJy
YXkgPSBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc1ZhbHVlKTsKKyAgICBib29s
IGlzUmVhbEFycmF5ID0gaXNKU0FycmF5KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFpc1JlYWxBcnJh
eSAmJiAhdGhpc1ZhbHVlLmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU0FycmF5KiB0aGlzT2JqID0gYXNBcnJh
eSh0aGlzVmFsdWUpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgc2VwYXJh
dG9yID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBr
ID0gMDsKLSAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7
CisgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodGhpc09iaik7CiAKICAgICAgICAgaWYgKGxlbmd0aCkgewpAQCAtMzg4LDcgKzM4
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOwogCi0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzVmFs
dWUpKQorICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcCgpKTsKIAogICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
IAotICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc1ZhbHVlKSAmJiBl
eGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgeworICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVl
KSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICBKU0FycmF5KiBhcnJh
eSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1c2goZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFy
cmF5LT5sZW5ndGgoKSkpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
c3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gdGhp
c09iai0+Z2V0KGV4ZWMsIDApOwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXNPYmopKQorICAgICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAg
ICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnNoaWZ0Q291bnQoZXhlYywgMSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMTsgayA8IGxlbmd0aDsgaysr
KSB7CkBAIC02MjcsNyArNjI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgYWRkaXRpb25h
bEFyZ3MgPSBzdGQ6Om1heDxpbnQ+KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOwogICAg
IGlmIChhZGRpdGlvbmFsQXJncyAhPSBkZWxldGVDb3VudCkgewogICAgICAgICBpZiAoYWRkaXRp
b25hbEFyZ3MgPCBkZWxldGVDb3VudCkgewotICAgICAgICAgICAgaWYgKCghYmVnaW4pICYmIChp
c0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpKQorICAgICAgICAgICAgaWYg
KCghYmVnaW4pICYmIChpc0pTQXJyYXkodGhpc09iaikpKQogICAgICAgICAgICAgICAgICgoSlNB
cnJheSAqKXRoaXNPYmopLT5zaGlmdENvdW50KGV4ZWMsIGRlbGV0ZUNvdW50IC0gYWRkaXRpb25h
bEFyZ3MpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBrID0gYmVnaW47IGsgPCBsZW5ndGggLSBkZWxldGVDb3VudDsgKytrKSB7CkBAIC02NDMsNyAr
NjQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGlj
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYg
KGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkpCisgICAgICAgICAgICBp
ZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSh0aGlzT2JqKSkpCiAgICAgICAgICAgICAgICAgKChK
U0FycmF5ICopdGhpc09iaiktPnVuc2hpZnRDb3VudChleGVjLCBhZGRpdGlvbmFsQXJncyAtIGRl
bGV0ZUNvdW50KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgayA9IGxlbmd0aCAtIGRlbGV0ZUNvdW50OyBrID4gYmVnaW47IC0taykgewpAQCAtNjc2
LDcgKzY3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNV
blNoaWZ0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIG5yQXJncyA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsKICAgICBpZiAoKG5yQXJncykgJiYgKGxlbmd0aCkpIHsKLSAgICAgICAg
aWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkKKyAgICAgICAgaWYg
KGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgICAgICgoSlNBcnJheSAqKXRoaXNPYmopLT51
bnNoaWZ0Q291bnQoZXhlYywgbnJBcmdzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiAwOyAtLWspIHsKQEAgLTcxNSw3ICs3MTUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRmlsdGVyKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGZpbHRlckluZGV4ID0gMDsKICAgICB1bnNpZ25l
ZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFz
RnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhp
c09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTc3
Myw3ICs3NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
TWFwKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTQXJyYXkqIHJlc3VsdEFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBsZW5ndGgpOwogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzT2JqKSkgeworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJh
eSh0aGlzT2JqKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlv
bik7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAg
Q2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7CiAKICAgICB1bnNp
Z25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXko
JmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9
IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXko
dGhpc09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAg
LTg5Miw3ICs4OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVj
LT5hcmd1bWVudCgxKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkg
eworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBj
YWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtOTQ0LDcgKzk0NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsK
LSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBp
c0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24o
ZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAg
ICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTEwMDIsNyArMTAw
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
IAogICAgIEpTQXJyYXkqIGFycmF5ID0gMDsKLSAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXNPYmopKQorICAgIGlmIChpc0pTQXJyYXkodGhpc09iaikpCiAgICAgICAg
IGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPj0gMikKQEAgLTEwNzksNyArMTA3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSAwOwot
ICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgaWYg
KGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwog
ICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCmluZGV4IGRj
MjhkZTE0MzE4MTI2NTgxMWMyYmYxNTk3MDJhZDI3MzUwYzIzYWIuLmE1NGQyODFhN2UwYmE0N2Vl
ZWEwYjc3NzU5NmI3OGIyNzFkMzhiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbkNvbnN0cnVj
dG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEJvb2xlYW5Db25zdHJ1Y3Rvcik7
CiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFuQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShCb29sZWFuQ29u
c3RydWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bk9iamVjdC5jcHAKaW5kZXggNWE0NDljMDYzOTM3NTc1MjUzODEyMWE5MTQ2OGIxNzk1NTc4MjI3
My4uMzdjNmVhYjBkZGVjZTNmNTRjM2VjYWM5MmFkODkyZjNmZDUyODBiOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKQEAgLTI0LDYgKzI0
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xl
YW5PYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoQm9vbGVhbk9iamVjdCk7
CiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFuT2JqZWN0OjpzX2luZm8gPSB7ICJCb29sZWFuIiwg
JkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJvb2xl
YW5PYmplY3QpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhblByb3RvdHlwZS5jcHAKaW5kZXggYzdlYTk2NGVjN2UzZTVmMzk0YWUxY2JhYmUwYzdmMmUy
YWUwZDQyOC4uYjk2MDVkMGNmYzdmZjA4YTIwMGViOWQ1MzljYjE4NmMxYWJmMDhmNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5Qcm90b3R5cGU6OnNfaW5m
byA9IHsgIkJvb2xlYW4iLCAmQm9vbGVhbk9iamVjdDo6c19pbmZvLAogKi8KIAogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEJvb2xlYW5Qcm90b3R5cGUpOwogCiBCb29sZWFuUHJvdG90eXBlOjpCb29sZWFu
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBC
b29sZWFuT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAwOWZlZGIzZjRlODMzYTRiZjIzMjZl
ODgxZTkwYTZkZmMzZDBkNzYyLi45ZmZmNjRlNjc1YTUwNTM4MDEzZGYxNTgxYTIxODQ3OGFkZjk4
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMzMs
NiArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogCiAgICAg
c3RydWN0IE1ldGhvZFRhYmxlIHsKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVzdHJveUZ1bmN0
aW9uUHRyKShKU0NlbGwqKTsKKyAgICAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3k7CisK
ICAgICAgICAgdHlwZWRlZiB2b2lkICgqVmlzaXRDaGlsZHJlbkZ1bmN0aW9uUHRyKShKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogICAgICAgICBWaXNpdENoaWxkcmVuRnVuY3Rpb25QdHIgdmlzaXRD
aGlsZHJlbjsKIApAQCAtMTE0LDYgKzExNyw3IEBAIHN0cnVjdCBNZW1iZXJDaGVjayMjbWVtYmVy
IHsgXAogI2RlZmluZSBIQVNfTUVNQkVSX05BTUVEKGtsYXNzLCBuYW1lKSAoTWVtYmVyQ2hlY2sj
I25hbWU8a2xhc3M+OjpoYXMpCiAKICNkZWZpbmUgQ1JFQVRFX01FVEhPRF9UQUJMRShDbGFzc05h
bWUpIHsgXAorICAgICAgICAmQ2xhc3NOYW1lOjpkZXN0cm95LCBcCiAgICAgICAgICZDbGFzc05h
bWU6OnZpc2l0Q2hpbGRyZW4sIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0Q2FsbERhdGEsIFwK
ICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0Q29uc3RydWN0RGF0YSwgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTMxODk5ZWIw
YTNjZWQ3NTY3YjhlOGNkZjdlZDBjNGQ0YjllZjUzMi4uYWQ0MDJjNzc1MWQ5YTdkYzQzYmQ3NjBk
ZjlhYzU4MDFmZGU3NzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBE
YXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246
OnNfaW5mCiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKERhdGVDb25zdHJ1Y3Rvcik7
CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihEYXRlQ29uc3RydWN0b3IpOwogCiBEYXRl
Q29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5jcHAKaW5kZXggNTQ1NzU3YjkzZjQ3YjY1NGZhYWI3M2E4ZGRkNGRhNjNjODllM2M4
YS4uYTUwMjc3MGM4NzUwOGI3MmU0ZjI0OThkZDljNzYyNzVjY2I3OGZlYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC01Myw2ICs1Mywx
MSBAQCB2b2lkIERhdGVJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBkb3VibGUgdGltZSkKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIGpz
TnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAKK3ZvaWQgRGF0ZUluc3RhbmNlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8RGF0ZUluc3RhbmNlKj4oY2VsbCktPkRhdGVJ
bnN0YW5jZTo6fkRhdGVJbnN0YW5jZSgpOworfQorCiBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
RGF0ZUluc3RhbmNlOjpjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiB7CiAgICAgZG91YmxlIG1pbGxpID0gaW50ZXJuYWxOdW1iZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKaW5kZXggMzI0MTcwYjFjYWY0
MDgwNzdkMGZlNDUxZDhiZjU1NWUwNjY0OWMwMC4uOGQ5MGNmMGM0MTdhZjg4MzU3Y2YwOGRmMmM4
OWViMjM0MWM0MTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmgKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmLCBkb3VibGUpOwotICAgICAgICAKKworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOworIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1dyYXBwZXJPYmpl
Y3QgQmFzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDRh
MWUxNDgyMDU1ZDlhY2QyNzdlNTQ1NjFiMzdiZjIxNjkxNmQ2OWIuLmE1MzczZDUyNWNhMTY2NDVj
OGEyZWYzYWQ4NWQ4OWI0NTJjMDI0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAKQEAgLTE3MCw2ICsxNzAsMTEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKSB9
OwogCit2b2lkIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit7CisgICAganNDYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGNlbGwpLT5T
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246On5TdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24o
KTsKK30KKwogSlNWYWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5oCmluZGV4IGFjNzM1NGQzMTcyMDRjZTdhNzdjOWU4ZTA5ZjAzZTczZWExYTJm
MjMuLjE3YzM0OThiY2ZmNDkzNTlmZjg2NGYxZTE4YWIzYTQwNDEyNzNiNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtODIsNiArODIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKKwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNTIzMDlkMWZkNmFhOTc0Mzk5YzY1NDdiNTYzNWZlNThlNjk0NGZm
Yy4uYzhmOTNiYTMyM2NjNWRjN2E3ZTM4Zjc1MjdiMGYyM2RjYzg4ZjMwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEVycm9yQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRXJyb3JD
b25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RXJyb3JDb25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA4M2FiZTVjMjYwMDY1MDYwNTdjMjAzM2Y2Y2JhMjg4
MjJlZmRkZWM3Li45MWE2ZmM0MGVhYjgxMTdkNmM1MWM5MGZiMmQwODNhZWIzOGNjYjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAt
MjMsNiArMjMsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoRXJyb3JJbnN0YW5jZSk7CisKIGNvbnN0IENsYXNzSW5mbyBFcnJvckluc3RhbmNl
OjpzX2luZm8gPSB7ICJFcnJvciIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoRXJyb3JJbnN0YW5jZSkgfTsKIAogRXJyb3JJbnN0YW5jZTo6RXJy
b3JJbnN0YW5jZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAppbmRleCBkNWFjZTgwN2E0ZDNiOThjMmE3MzIyMmQ2NjE1NzFhYTk1MmM3MDIzLi4wNWU5
NzFmN2ZmMDViM2U2NDRlYWJiOTZiNWNjMDY5NTllNmQ4YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNDEsNiArNDEs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcik7CisKIGNvbnN0IENsYXNzSW5mbyBJbnRlcnJ1cHRl
ZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRlcnJ1cHRlZEV4ZWN1
dGlvbkVycm9yKSB9OwogCiBKU1ZhbHVlIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSBoaW50KQpAQCAtNjYsNiArNjgsOCBAQCBib29sIGlzSW50ZXJydXB0ZWRFeGVjdXRp
b25FeGNlcHRpb24oSlNWYWx1ZSB2YWx1ZSkKIH0KIAogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOworCiBjb25zdCBDbGFzc0luZm8gVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvcikgfTsKIAogSlNWYWx1ZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAppbmRleCA2NGU5MmU4YWYxZGZlMTNmYzExNmM2NTgwOWYwYTUxNjc4M2NiM2IyLi5h
ZDg2NDYzZGJmNDc3MmIxYTZkZjNjZDNiYTQ1MWQxZDhjNTExNDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzgsNiArMzgsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBFeGVjdXRhYmxlQmFzZTo6c19pbmZvID0g
eyAiRXhlY3V0YWJsZSIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZUJh
c2UpIH07CiAKK3ZvaWQgRXhlY3V0YWJsZUJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KGNlbGwpLT5FeGVjdXRhYmxlQmFzZTo6fkV4ZWN1
dGFibGVCYXNlKCk7Cit9CisKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUo
KQogewogI2lmIEVOQUJMRShKSVQpCkBAIC02MSw4ICs2Niw5IEBAIEludHJpbnNpYyBFeGVjdXRh
YmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1
dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlOjp+TmF0aXZlRXhlY3V0YWJsZSgpCit2b2lkIE5hdGl2ZUV4ZWN1dGFi
bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxOYXRpdmVFeGVjdXRhYmxl
Kj4oY2VsbCktPk5hdGl2ZUV4ZWN1dGFibGU6On5OYXRpdmVFeGVjdXRhYmxlKCk7CiB9CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKQEAgLTkzLDYgKzk5LDExIEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJs
ZTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0
YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKK3Zv
aWQgU2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0
PFNjcmlwdEV4ZWN1dGFibGUqPihjZWxsKS0+U2NyaXB0RXhlY3V0YWJsZTo6flNjcmlwdEV4ZWN1
dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJFdmFsRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKIEV2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpblN0cmljdENvbnRleHQpCkBAIC0xMDAsOCArMTExLDkgQEAgRXZhbEV4ZWN1dGFibGU6OkV2
YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGkKIHsKIH0KIAotRXZhbEV4ZWN1dGFibGU6On5FdmFsRXhlY3V0YWJsZSgpCit2b2lkIEV2
YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8RXZhbEV4
ZWN1dGFibGUqPihjZWxsKS0+RXZhbEV4ZWN1dGFibGU6On5FdmFsRXhlY3V0YWJsZSgpOwogfQog
CiBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlByb2dyYW1F
eGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKQEAgLTExMSw4ICsxMjMsOSBAQCBQcm9ncmFt
RXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCiB7CiB9CiAKLVByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1
dGFibGUoKQordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7
CisgICAganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRhYmxl
Ojp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFi
bGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUp
IH07CkBAIC0xMzcsOCArMTUwLDkgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1
dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLAogewogfQogCi1G
dW5jdGlvbkV4ZWN1dGFibGU6On5GdW5jdGlvbkV4ZWN1dGFibGUoKQordm9pZCBGdW5jdGlvbkV4
ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihjZWxsKS0+RnVuY3Rpb25FeGVjdXRhYmxlOjp+RnVuY3Rpb25FeGVjdXRhYmxl
KCk7CiB9CiAKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA2Mzk1ODQzYWMyZDNlYWM2YzFl
NDM0YjhhYzJhMDJjYmI3YzA0ZjI3Li43Zjg1YzkwMjcwN2U2ZWJhNjdlNjZmNzc1MGExZDBlZDI1
MWNlMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBA
IC03Nyw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OworCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoKG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPT0gTlVNX1BBUkFNRVRFUlNf
SVNfSE9TVCkgPT0gKG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9PSBOVU1fUEFSQU1FVEVS
U19JU19IT1NUKSk7CkBAIC0yMDYsNyArMjA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgfk5hdGl2ZUV4ZWN1dGFibGUoKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yOyB9CkBAIC0yNzQsNiArMjc2
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7IH0KICAgICAgICAg
Y29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlk
ZXIoKS0+dXJsKCk7IH0KQEAgLTMxOCw3ICszMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCi0gICAgICAg
IHZpcnR1YWwgfkV2YWxFeGVjdXRhYmxlKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGUoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiAgICAgICAgIHsKQEAgLTM5MSw3ICszOTUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlOwogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBKU09iamVjdCogY29tcGls
ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKICAgICAg
ICAgewpAQCAtNDY4LDcgKzQ3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGV4ZWN1dGFibGU7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5GdW5jdGlvbkV4
ZWN1dGFibGUoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
ICAgICBKU0Z1bmN0aW9uKiBtYWtlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggYmU0YzYzYzQ1NzZjZTc0MDFkMWZj
OTAxNjllZTQ2ZjMwNzVlNmUwNi4uZTA4ZTU4YzgzNWE4ZDJmZDE1ZGEzZGJmMDg4NmFjOWJkOTE3
NDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uQ29uc3RydWN0b3IpOworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNz
SW5mbyBGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCmluZGV4IDE5ODk4MjdiMmZkYWY3NWYxZTg5NzJhNjY0NGZmNmI1ZjZhZjJhMjkuLmIx
MDE3ZTQ5MzcyZTM1NzExNmQwZTllMjU4MGVjYWNkOTc2YTQyODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1
bmN0aW9uUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEZ1bmN0aW9u
UHJvdG90eXBlKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RnVuY3Rpb25Qcm90b3R5cGUpIH07CiAKQEAgLTEzNiw3ICsxMzcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgaWYgKGFzQXJndW1lbnRzKGFycmF5KS0+bGVuZ3RoKGV4ZWMpID4gQXJndW1l
bnRzOjpNYXhBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgICAgICBhc0FyZ3VtZW50
cyhhcnJheSktPmZpbGxBcmdMaXN0KGV4ZWMsIGFwcGx5QXJncyk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KSkgeworICAgICAgICB9IGVs
c2UgaWYgKGlzSlNBcnJheShhcnJheSkpIHsKICAgICAgICAgICAgIGlmIChhc0FycmF5KGFycmF5
KS0+bGVuZ3RoKCkgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAg
ICAgICAgICAgIGFzQXJyYXkoYXJyYXkpLT5maWxsQXJnTGlzdChleGVjLCBhcHBseUFyZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXgg
MTdjYmI0NDlmMmM2ZDcxNzEzYTVlYjE1NjBkZjcyZTcyYzE5Mjk3MS4uOTIwMzk5ZGRhM2YzOGJm
ODc3MWVlNTA1ZjY2ZDE5NGJkZGU5YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihHZXR0ZXJTZXR0ZXIpOworCiBj
b25zdCBDbGFzc0luZm8gR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJHZXR0ZXJTZXR0ZXIiLCAw
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdldHRlclNldHRlcikgfTsKIAogdm9pZCBHZXR0
ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKaW5kZXggM2EzNzFmOTUwZDNjZTNhMDc1M2Q4MGRmOGIyYjk0MzU2YzNmNWRk
OC4uZTVlMWMyYWU1ZjJhYTNjY2E2NWUzZTk2OGQ0NTQ2Mzg1ODVhZGI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAK
QEAgLTU3LDcgKzU3LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQog
I2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICBXcml0ZUJhcnJpZXJDb3Vu
dGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCi0gICAgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJz
KCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKEFTU0VNQkxFUikKICAgICBFeGVjdXRhYmxl
QWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMTcxNDE2
Mzc2NzEzOWI2MDNkYzQ2NmRlMzVkYjk2ODliMzdiOWIzYS4uNTBlYTUwNGMxYTkzOTZkMjllZTU3
N2EzN2ZlNWQwYTMzZGQ3MWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTI5LDE4ICsyOSwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotLy8gRW5zdXJlIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSB2dGFibGUgZm9y
IEludGVybmFsRnVuY3Rpb24hCi12b2lkIEludGVybmFsRnVuY3Rpb246OnZ0YWJsZUFuY2hvcigp
IHt9Ci0KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50ZXJuYWxGdW5jdGlvbik7CitBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihJbnRlcm5hbEZ1bmN0aW9uKTsKIAogY29uc3QgQ2xh
c3NJbmZvIEludGVybmFsRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkpTTm9uRmlu
YWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRlcm5hbEZ1bmN0
aW9uKSB9OwogCi1JbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGlu
Z0hhY2tUeXBlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQotewot
fQotCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVj
dChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewpAQCAtNjMsNyArNTYs
NyBAQCBjb25zdCBVU3RyaW5nIEludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1l
KTsKICAgICAKLSAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xvYmFs
RGF0YSgpLCBkaXNwbGF5TmFtZSkpCisgICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmco
ZGlzcGxheU5hbWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlH
ZXRWYWx1ZSgpOwogICAgIAogICAgIHJldHVybiBVU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggOGUyMTc4ZTNmNjU5
NzhhOWMxYWVhZTlhNDU1ZjYyOWJmMTRjYWYwMy4uYTAzOGI3YWUxOTc4OGJmZjQ0NWYwMjgyMjcy
NGVjODZjYzgxMjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaApAQCAtNDksMTcgKzQ5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0g
ICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVuY3Rp
b24gdnB0cgotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsK
LQogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2
dGFibGVBbmNob3IoKTsKICAgICB9OwogCiAgICAgSW50ZXJuYWxGdW5jdGlvbiogYXNJbnRlcm5h
bEZ1bmN0aW9uKEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IGIxYjMzZjVkN2JhYTRlYzlkNmU5ZjRlOTMz
ZDc0MjEwOWM4NDQ0ZDMuLjg1MTcwODVkZmVlMjY4ZjNmNGY3OTZiODE2NDIwZDcyN2EyNGM5ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3Jh
cHBlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTQVBJVmFsdWVXcmFwcGVyKTsKKwogY29uc3QgQ2xhc3NJ
bmZvIEpTQVBJVmFsdWVXcmFwcGVyOjpzX2luZm8gPSB7ICJBUEkgV3JhcHBlciIsIDAsIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNBUElWYWx1ZVdyYXBwZXIpIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBm
NzU2YzdiZTI0YTllNGQ1ODk3OGMwYTVmMjY1MzJlNGRlYmNhMmExLi4wYzkyMjBlNjI2ZDI1ZTY2
MWIxYTRmMjBiOWQ4ZjJkYzU5MWM5ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcApAQCAtMTI2LDExICsxMjYsNiBAQCBpbmxpbmUgdm9pZCBKU0FycmF5Ojpj
aGVja0NvbnNpc3RlbmN5KENvbnNpc3RlbmN5Q2hlY2tUeXBlKQogCiAjZW5kaWYKIAotSlNBcnJh
eTo6SlNBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qo
VlB0clN0ZWFsaW5nSGFjaykKLXsKLX0KLQogSlNBcnJheTo6SlNBcnJheShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CkBAIC0yNzcsMTMgKzI3MiwxOCBAQCB2b2lkIEpT
QXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNW
YWx1ZSogdmFsdWVzLCBzaQogCiBKU0FycmF5Ojp+SlNBcnJheSgpCiB7Ci0gICAgQVNTRVJUKHZw
dHIoKSA9PSBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyKTsKKyAgICBBU1NFUlQoanNDYXN0PEpT
QXJyYXkqPih0aGlzKSk7CiAgICAgY2hlY2tDb25zaXN0ZW5jeShEZXN0cnVjdG9yQ29uc2lzdGVu
Y3lDaGVjayk7CiAKICAgICBkZWxldGUgbV9zdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwOwogICAg
IGZhc3RGcmVlKG1fc3RvcmFnZS0+bV9hbGxvY0Jhc2UpOwogfQogCit2b2lkIEpTQXJyYXk6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCktPkpTQXJy
YXk6On5KU0FycmF5KCk7Cit9CisKIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGU5NThk
NTUyZjJmZWNmNGJkMTdkOWZjNWVhODU0ZTZlNmZiYzhjZTIuLjFlYWQ4MmM4NjlkMTM3MWMxMjdm
NzFhY2ZjY2Y3NzEwZmY0N2NiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKQEAgLTcxLDggKzcxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgICAgICBKU0FycmF5KFZQ
dHJTdGVhbGluZ0hhY2tUeXBlKTsKLSAgICAgICAgdmlydHVhbCB+SlNBcnJheSgpOworICAgICAg
ICB+SlNBcnJheSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAg
ICAgICAgIHN0YXRpYyBKU0FycmF5KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewpAQCAtMjE2LDggKzIxNiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gYXNBcnJheSh2YWx1ZS5hc0NlbGwoKSk7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
SlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNBcnJh
eVZQdHI7IH0KLSAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KGdsb2JhbERh
dGEsIHYuYXNDZWxsKCkpOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2Vs
bCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQorICAg
IGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYg
aXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKICAgICAvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFi
b3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCiAgICAgLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0
cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAt
IDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcAppbmRleCBjZjBiYTgzNTg1OGIzYjNhNWUxNDdkZWQ1NjgzNjM3MzNiNzFmN2NmLi4wZTVh
OTlhZTViZjg2OGUwMzA2MTkzMzE0Y2RlOGViNmY0YmMxOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQm91bmRG
dW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0JvdW5kRnVuY3Rpb24p
OwogCiBjb25zdCBDbGFzc0luZm8gSlNCb3VuZEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCb3VuZEZ1bmN0
aW9uKSB9OwogCkBAIC0zOCw3ICszOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Ym91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTQm91bmRGdW5jdGlv
biogYm91bmRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKTsKIAotICAgIEFTU0VSVChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgYm91
bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKKyAg
ICBBU1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKSk7IC8vIEN1cnJl
bnRseSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYXNBcnJheShib3Vu
ZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OwpAQCAtNTgsNyArNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKTsKIAotICAgIEFTU0VSVChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgYm91bmRG
dW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKKyAgICBB
U1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKSk7IC8vIEN1cnJlbnRs
eSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYXNBcnJheShib3VuZEZ1
bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IDk5
NzNjNTY2MWIyZTk3MjE3MjE1YzRiMzY2Yzc3YzQwZTcxODcwYTQuLjc0NzhhMDhmYmE0OTM5NDdl
OGFjNmY4NjhkNTRiMTVlNjVkNWRiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTQxLDEzICs0MSwxNSBAQCBKU0J5dGVBcnJheTo6SlNC
eXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5
KiBzdG9yYQogewogfQogICAgICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBKU0J5dGVBcnJh
eTo6fkpTQnl0ZUFycmF5KCkKIHsKLSAgICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6
anNCeXRlQXJyYXlWUHRyKTsKKyAgICBBU1NFUlQoanNDYXN0PEpTQnl0ZUFycmF5Kj4odGhpcykp
OwogfQotI2VuZGlmCiAKK3ZvaWQgSlNCeXRlQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIGpzQ2FzdDxKU0J5dGVBcnJheSo+KGNlbGwpLT5KU0J5dGVBcnJheTo6fkpTQnl0ZUFy
cmF5KCk7Cit9CiAKIFN0cnVjdHVyZSogSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggMDA0MWQxNGM0NDAw
MTU4YjNlYWUxYjNhZWYyZDRhZWQ5ZmUxZmYzZS4uNTEyMmJhZDVlZmE0NzNiNjg4NDBmMTM2MDRk
YTc5ZTQ5YzM1MWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCeXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVB
cnJheS5oCkBAIC0xMDIsOSArMTAyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgV1RG
OjpCeXRlQXJyYXkqIHN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuZ2V0KCk7IH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgdmlydHVhbCB+SlNCeXRlQXJyYXkoKTsK
LSNlbmRpZgorICAgICAgICB+SlNCeXRlQXJyYXkoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mU3RvcmFnZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0J5dGVBcnJheSwgbV9zdG9yYWdlKTsgfQogCkBA
IC0xMTgsMTEgKzExNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICAgICAg
ICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQogICAgICAgICBSZWZQdHI8V1RGOjpCeXRlQXJyYXk+IG1fc3RvcmFnZTsKICAgICB9
OwogICAgIApAQCAtMTMyLDcgKzEyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNCeXRlQXJyYXkqPih2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCi0g
ICAgaW5saW5lIGJvb2wgaXNKU0J5dGVBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpT
VmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xv
YmFsRGF0YS0+anNCeXRlQXJyYXlWUHRyOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0J5dGVBcnJh
eShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZv
KCkgPT0gJkpTQnl0ZUFycmF5OjpzX2luZm87IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDQ5MWVmMDgxM2ZlODU4
ZDRkMzg2NTY0N2Q2OGZhMWFjYjdiYzBhZTEuLjA2NWZkMTNlYWExMmY1YmZlY2E1OGIyZThhZDI0
MGY5MTVlN2RiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMzEsNiArMzEsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKEpTQ2VsbCk7CisKK3ZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsKK30KKwogYm9vbCBKU0NlbGw6Omdl
dFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5nVmFsdWUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpc1N0cmluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApp
bmRleCA3NmNlZjA0NWE2OTE5OTI1YzBkNzc4YjNmODM3ZTZjMmQ2OGY3NDdjLi5jNzU1YTYwM2Qy
Njc2ODEwMjljNWQwMWY1YTM1ZDFiZjdhZDc2NDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaApAQCAtNjUsMTUgKzY1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBlbnVtIENyZWF0aW5nRWFybHlDZWxsVGFnIHsgQ3JlYXRpbmdFYXJseUNlbGwgfTsKICAgICAg
ICAgSlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKTsKIAotICAgICAgICBlbnVtIFZQdHJTdGVh
bGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9OwotICAgICAgICBleHBsaWNpdCBKU0Nl
bGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQotCiAgICAgcHVibGljOgogICAgICAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbikgeyBy
ZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0gLy8gVXNlZCBmb3IgaW5pdGlhbGl6YXRp
b24gYWZ0ZXIgR0MgYWxsb2NhdGlvbi4KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgSlNDZWxs
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsg
Ly8gSW52b2tlZCBieSBHQyBmaW5hbGl6YXRpb24uCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBl
LgpAQCAtMTA4LDYgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIE9iamVj
dCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogdmFsaWRhdGVkQ2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhv
ZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwpAQCAtMTE3
LDggKzExNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU09iamVjdCog
dG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogCi0gICAgICAgIHZvaWQqIHZwdHIo
KSBjb25zdCB7IEFTU0VSVCghaXNaYXBwZWQoKSk7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiBjb25zdCo+KHRoaXMpOyB9Ci0gICAgICAgIHZvaWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7
ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyBBU1NFUlQoIWlzWmFwcGVk
KCkpOyB9CiAgICAgICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Qq
Kj4odGhpcykgPSAwOyB9CiAgICAgICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAh
KnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9CiAKQEAgLTEzMyw2
ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSk7CiAgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX2NsYXNzSW5mbyk7CisgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQqIHN0cnVjdHVyZUFkZHJlc3MoKQogICAgICAg
ICB7CkBAIC0xNjYsMTMgKzE2Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwotICAgIAotICAgIGlubGluZSBKU0NlbGw6
OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgICAgICA6IG1fc3RydWN0dXJlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSkKLSAgICB7
Ci0gICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFn
KQogICAgIHsKQEAgLTE4OSwyNSArMTg2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
U1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCi0gICAgewotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQotICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKLSAg
ICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwotICAgICAgICBp
ZiAoc3RydWN0dXJlKQotI2VuZGlmCi0gICAgICAgICAgICBtX3N0cnVjdHVyZS5zZXRFYXJseVZh
bHVlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSk7Ci0gICAgICAgIC8vIFZlcnkgZmlyc3Qg
c2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KLSAgICAgICAg
QVNTRVJUKG1fc3RydWN0dXJlIHx8ICFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIEpTQ2VsbDo6fkpTQ2VsbCgpCisgICAgaW5saW5lIFN0cnVjdHVy
ZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3Ry
dWN0dXJlKCkgY29uc3QKKyAgICBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNz
SW5mbygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiBtX2NsYXNzSW5mbzsKICAgICB9CiAKICAgICBpbmxpbmUgdm9pZCBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMDgxMmYy
MWMyYTIxM2E4YmYxYzQ5YmQ3NjBkNjM0MTNjZThmNjgxMy4uNGUwNTUzNTJkZDVmZjJiMjdiNzkx
YmM2MzQ0NWQwOTEzMjgyNjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTczLDExICs3Myw2IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGlu
CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1KU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZQdHJT
dGVhbGluZ0hhY2tUeXBlKQotICAgIDogQmFzZShWUHRyU3RlYWxpbmdIYWNrKQotewotfQotCiBK
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKCkKQEAgLTExMywxNCArMTA4
LDExIEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25OYW1l
T2Zmc2V0KCksIGV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsKIH0KIAotSlNGdW5jdGlvbjo6fkpT
RnVuY3Rpb24oKQordm9pZCBKU0Z1bmN0aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAg
ICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIpOwotfQotCi12
b2lkIEpTRnVuY3Rpb246OnZ0YWJsZUFuY2hvcigpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJX
ZSBuZWVkIHNvbWV0aGluZyBoZXJlIHRoYXQgVmlzdWFsIFN0dWRpbyBjYW4ndCBvcHRpbWl6ZSBh
d2F5LlxuIik7CisgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oY2VsbCk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNz
T2YoJkpTRnVuY3Rpb246OnNfaW5mbykpOworICAgIHRoaXNPYmplY3QtPkpTRnVuY3Rpb246On5K
U0Z1bmN0aW9uKCk7CiB9CiAKIHZvaWQgY3JlYXRlRGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCkBAIC0xMzgsNyArMTMwLDcgQEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0
aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBkaXNwbGF5
TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCi0gICAgaWYgKGRpc3BsYXlOYW1lICYm
IGlzSlNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZGlzcGxheU5hbWUpKQorICAgIGlmIChk
aXNwbGF5TmFtZSAmJiBpc0pTU3RyaW5nKGRpc3BsYXlOYW1lKSkKICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKGRpc3BsYXlOYW1lKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAKICAgICByZXR1cm4gVVN0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4
IGI3NTMzMmE1NzQwMTQyNjAzYjlkZGE5YmQ3ZTRmYTE2NjczNjJhNTMuLjk4OGFlMTIxM2U1YjU5
Zjg4NWJjMDdmOTc0ODM1ZDIzZTNmNzQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBj
bGFzcyBTb3VyY2VDb2RlOwotICAgIGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZTsKICAgICBuYW1l
c3BhY2UgREZHIHsKICAgICBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKICAgICBjbGFzcyBKSVRDb21w
aWxlcjsKQEAgLTY1LDggKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgfkpTRnVu
Y3Rpb24oKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOyAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgb25jZSBvcHRpbWl6YXRpb25zIG5vIGxvbmdlciByZWx5IG9uIHRlc3Rpbmcg
dnRhYmxlcworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAg
IGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcg
ZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDQsOCArMTQyLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0
ZWFsaW5nSGFja1R5cGUpOwotCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggYTUzNWZjMjQ3ZGIyODQ4NjFiZTkz
ZDhiYWE2MWFmN2Q3NDg4MzAzZS4uMjJlNzY5M2RjZmI2YzEwMzljMDc0Y2RmNjdhMTg5MjE4ZjUy
MmRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCkBAIC0xMDksMTIgKzEwOSw2IEBAIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwUHJv
dG90eXBlVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHN0cmluZ1RhYmxlOwogZXh0ZXJu
IGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOwogCi12b2lkKiBKU0dsb2Jh
bERhdGE6OmpzRmluYWxPYmplY3RWUHRyOwotdm9pZCogSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0
cjsKLXZvaWQqIEpTR2xvYmFsRGF0YTo6anNCeXRlQXJyYXlWUHRyOwotdm9pZCogSlNHbG9iYWxE
YXRhOjpqc1N0cmluZ1ZQdHI7Ci12b2lkKiBKU0dsb2JhbERhdGE6OmpzRnVuY3Rpb25WUHRyOwot
CiAjaWYgQ09NUElMRVIoR0NDKQogLy8gV29yayBhcm91bmQgZm9yIGdjYyB0cnlpbmcgdG8gY29h
bGVzY2Ugb3VyIHJlYWRzIG9mIHRoZSB2YXJpb3VzIGNlbGwgdnB0cnMKICNkZWZpbmUgQ0xPQkJF
Ul9NRU1PUlkoKSBkbyB7IFwKQEAgLTEyNCw1MiArMTE4LDYgQEAgdm9pZCogSlNHbG9iYWxEYXRh
Ojpqc0Z1bmN0aW9uVlB0cjsKICNkZWZpbmUgQ0xPQkJFUl9NRU1PUlkoKSBkbyB7IH0gd2hpbGUg
KGZhbHNlKQogI2VuZGlmCiAKLXZvaWQgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCkKLXsKLSAg
ICAvLyBFbm91Z2ggc3RvcmFnZSB0byBmaXQgYSBKU0FycmF5LCBKU0J5dGVBcnJheSwgSlNTdHJp
bmcsIG9yIEpTRnVuY3Rpb24uCi0gICAgLy8gQ09NUElMRV9BU1NFUlRTIGJlbG93IGNoZWNrIHRo
YXQgdGhpcyBpcyB0cnVlLgotICAgIGNoYXIgc3RvcmFnZVs2NF07Ci0KLSAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoSlNGaW5hbE9iamVjdCkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNG
aW5hbE9iamVjdF9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzRmlu
YWxPYmplY3QgPSBuZXcgKHN0b3JhZ2UpIEpTRmluYWxPYmplY3QoSlNGaW5hbE9iamVjdDo6VlB0
clN0ZWFsaW5nSGFjayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6
OmpzRmluYWxPYmplY3RWUHRyID0ganNGaW5hbE9iamVjdC0+dnB0cigpOwotCi0gICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKEpTQXJyYXkpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTQXJy
YXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAgSlNDZWxsKiBqc0FycmF5ID0gbmV3
IChzdG9yYWdlKSBKU0FycmF5KEpTQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwotICAgIENMT0JC
RVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0ciA9IGpzQXJyYXktPnZw
dHIoKTsKLQotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0J5dGVBcnJheSkgPD0gc2l6ZW9m
KHN0b3JhZ2UpLCBzaXplb2ZfSlNCeXRlQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7
Ci0gICAgSlNDZWxsKiBqc0J5dGVBcnJheSA9IG5ldyAoc3RvcmFnZSkgSlNCeXRlQXJyYXkoSlNC
eXRlQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwotICAgIENMT0JCRVJfTUVNT1JZKCk7Ci0gICAg
SlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHIgPSBqc0J5dGVBcnJheS0+dnB0cigpOwotCi0g
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTU3RyaW5nKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNp
emVvZl9KU1N0cmluZ19tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpz
U3RyaW5nID0gbmV3IChzdG9yYWdlKSBKU1N0cmluZyhKU1N0cmluZzo6VlB0clN0ZWFsaW5nSGFj
ayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6OmpzU3RyaW5nVlB0
ciA9IGpzU3RyaW5nLT52cHRyKCk7Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNGdW5j
dGlvbikgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNGdW5jdGlvbl9tdXN0X2JlX2xlc3Nf
dGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzRnVuY3Rpb24gPSBuZXcgKHN0b3JhZ2UpIEpT
RnVuY3Rpb24oSlNDZWxsOjpWUHRyU3RlYWxpbmdIYWNrKTsKLSAgICBDTE9CQkVSX01FTU9SWSgp
OwotICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIgPSBqc0Z1bmN0aW9uLT52cHRyKCk7
Ci0KLSAgICAvLyBVbnRpbCB3ZSBmdWxseSByZW1vdmUgb3VyIHJlbGlhbmNlIG9uIHZwdHJzLCB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5Ym9keSB0aGF0IAotICAgIC8vIHdlIHRoaW5r
IGhhcyBhIHVuaXF1ZSB2aXJ0dWFsIHBvaW50ZXIgYWN0dWFsbHkgZG9lcy4KLSAgICBpZiAoanNG
aW5hbE9iamVjdFZQdHIgPT0ganNBcnJheVZQdHIKLSAgICAgICAgfHwganNGaW5hbE9iamVjdFZQ
dHIgPT0ganNCeXRlQXJyYXlWUHRyCi0gICAgICAgIHx8IGpzRmluYWxPYmplY3RWUHRyID09IGpz
U3RyaW5nVlB0cgotICAgICAgICB8fCBqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0Z1bmN0aW9uVlB0
cgotICAgICAgICB8fCBqc0FycmF5VlB0ciA9PSBqc0J5dGVBcnJheVZQdHIKLSAgICAgICAgfHwg
anNBcnJheVZQdHIgPT0ganNTdHJpbmdWUHRyCi0gICAgICAgIHx8IGpzQXJyYXlWUHRyID09IGpz
RnVuY3Rpb25WUHRyCi0gICAgICAgIHx8IGpzQnl0ZUFycmF5VlB0ciA9PSBqc1N0cmluZ1ZQdHIK
LSAgICAgICAgfHwganNCeXRlQXJyYXlWUHRyID09IGpzRnVuY3Rpb25WUHRyCi0gICAgICAgIHx8
IGpzU3RyaW5nVlB0ciA9PSBqc0Z1bmN0aW9uVlB0cikKLSAgICAgICAgQ1JBU0goKTsKLX0KLQog
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUs
IFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQogICAg
IDogZ2xvYmFsRGF0YVR5cGUoZ2xvYmFsRGF0YVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDEzOWRk
NDI1MWQyZjIwNDRhYWZiMDg2ZjdjYmI0ZTU4YWQxYjlmOTAuLjE2MTlmOTI5NzBlZDc3OWJkYmY0
YjZjODJhZGRkYmMwMWRlNDdjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCkBAIC0xMDUsMTggKzEwNSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIHN0cnVjdCBUeXBlZEFycmF5RGVzY3JpcHRvciB7CiAgICAgICAgIFR5cGVkQXJyYXlEZXNj
cmlwdG9yKCkKLSAgICAgICAgICAgIDogbV92cHRyKDApCisgICAgICAgICAgICA6IG1fY2xhc3NJ
bmZvKDApCiAgICAgICAgICAgICAsIG1fc3RvcmFnZU9mZnNldCgwKQogICAgICAgICAgICAgLCBt
X2xlbmd0aE9mZnNldCgwKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgVHlwZWRBcnJh
eURlc2NyaXB0b3Iodm9pZCogdnB0ciwgc2l6ZV90IHN0b3JhZ2VPZmZzZXQsIHNpemVfdCBsZW5n
dGhPZmZzZXQpCi0gICAgICAgICAgICA6IG1fdnB0cih2cHRyKQorICAgICAgICBUeXBlZEFycmF5
RGVzY3JpcHRvcihjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgc2l6ZV90IHN0b3JhZ2VPZmZz
ZXQsIHNpemVfdCBsZW5ndGhPZmZzZXQpCisgICAgICAgICAgICA6IG1fY2xhc3NJbmZvKGNsYXNz
SW5mbykKICAgICAgICAgICAgICwgbV9zdG9yYWdlT2Zmc2V0KHN0b3JhZ2VPZmZzZXQpCiAgICAg
ICAgICAgICAsIG1fbGVuZ3RoT2Zmc2V0KGxlbmd0aE9mZnNldCkKICAgICAgICAgewogICAgICAg
ICB9Ci0gICAgICAgIHZvaWQqIG1fdnB0cjsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2Ns
YXNzSW5mbzsKICAgICAgICAgc2l6ZV90IG1fc3RvcmFnZU9mZnNldDsKICAgICAgICAgc2l6ZV90
IG1fbGVuZ3RoT2Zmc2V0OwogICAgIH07CkBAIC0xOTMsMTMgKzE5Myw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdFeHBTdHJ1Y3R1cmU7CiAgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0dXJlOwogCi0gICAgICAgIHN0
YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9p
ZCoganNGaW5hbE9iamVjdFZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQq
IGpzQXJyYXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0J5dGVB
cnJheVZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzU3RyaW5nVlB0
cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNGdW5jdGlvblZQdHI7Ci0K
ICAgICAgICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENvbW1v
bklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgICAgICBjb25zdCBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUgc3VwcG9zZWQgdG8gYmUgYWxsb2NhdGVk
IG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1lbnRzIHByb3Blcmx5IG1hcmtlZCwgd2hp
Y2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhpcyBsaXN0IGhhcyBub3RoaW5nIHRvIG1h
cmsuCkBAIC0zNDAsNyArMzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIHJlZ2lzdGVy
VHlwZWRBcnJheUZ1bmN0aW9uKHR5cGUsIGNhcGl0YWxpemVkVHlwZSkgXAogICAgICAgICB2b2lk
IHJlZ2lzdGVyVHlwZWRBcnJheURlc2NyaXB0b3IoY29uc3QgY2FwaXRhbGl6ZWRUeXBlIyNBcnJh
eSosIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBcCiAgICAgICAgIHsg
XAotICAgICAgICAgICAgQVNTRVJUKCFtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fdnB0ciB8
fCBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fdnB0ciA9PSBkZXNjcmlwdG9yLm1fdnB0cik7
IFwKKyAgICAgICAgICAgIEFTU0VSVCghbV8jI3R5cGUjI0FycmF5RGVzY3JpcHRvci5tX2NsYXNz
SW5mbyB8fCBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fY2xhc3NJbmZvID09IGRlc2NyaXB0
b3IubV9jbGFzc0luZm8pOyBcCiAgICAgICAgICAgICBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9y
ID0gZGVzY3JpcHRvcjsgXAogICAgICAgICB9IFwKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURl
c2NyaXB0b3ImIHR5cGUjI0FycmF5RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fIyN0eXBl
IyNBcnJheURlc2NyaXB0b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNDI5ODVjMTRmYmIyYTY0MThkNmQ1M2E3MzgyOTFj
MTM4MTY4ZGM5Li40MjBiYzg5YzFiZGIyOGI2OGRmZmQxN2M4MWZiNzg0NGZlN2U0YTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMjIsNiArMTIyLDExIEBAIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogICAg
IH0KIH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9i
YWxPYmplY3QoKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhp
c1ZhbHVlKQogewogICAgIEFTU0VSVChKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggM2Y5M2NkOGIxODEwMTMzOGM1MmNhY2M4NWEzYWQzYTAwM2MyYzdkMS4uNzgyZTNhM2Mx
M2I0MzI1NGY5NDVmYTY5NWNiMjhkMWE5YzA3MGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xOTMsNyArMTkzLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+SlNH
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgfkpTR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcAppbmRleCA4NWJmYjdhMzg2NjY0OTMzNjk3ZmZjNjcy
NWJjY2E1Y2U1MDM5Y2E0Li44YjJhN2ExZWY1MWUyNGU3MTg2ZTc2MDBmNGJmMTU2YWU1MjA1ZjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTR2xvYmFsVGhpcyk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0ds
b2JhbFRoaXMpOwogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxUaGlzOjpzX2luZm8gPSB7ICJK
U0dsb2JhbFRoaXMiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
R2xvYmFsVGhpcykgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcAppbmRleCA5MWY5MGQ2MjQwMTk4OWQ4ODdkYjA2ZmUwMjllNWY3NWEyZjM0
MjI2Li42ODI0MDAyOTI3ZGU5MGE4OTNiNDk5MjFhZDQ5NjUwMzJjMTcxYjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNO
b3RBbk9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU05vdEFuT2JqZWN0
KTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTTm90QW5PYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOb3RBbk9iamVjdCkg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRl
eCBlYTRjMWFkNjY3YTljYTU3ZjU1NWM2MDQ0YTEzM2M0NmFmNzYyZTM0Li4wNWM2YzI5NTM1ZWYy
NWMzZGZiYTA1MjgzNGIxZTdlOGJkYjVmNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDMsNiArNDMsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPTk9iamVjdCk7CitBU1NFUlRfSEFTX1RS
SVZJQUxfREVTVFJVQ1RPUihKU09OT2JqZWN0KTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUq
KTsKQEAgLTQ5NSw3ICs0OTYsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5l
eHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZpZXIsIFVTdHJpbmdCdQogICAgIC8vIEZp
cnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1faW5kZXgpIHsKICAgICAg
ICAgaWYgKG1faXNBcnJheSkgewotICAgICAgICAgICAgbV9pc0pTQXJyYXkgPSBpc0pTQXJyYXko
JmV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgbV9pc0pT
QXJyYXkgPSBpc0pTQXJyYXkobV9vYmplY3QuZ2V0KCkpOwogICAgICAgICAgICAgbV9zaXplID0g
bV9vYmplY3QtPmdldChleGVjLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC02NjksNyArNjcwLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUg
V2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgIGFycmF5U3RhcnRT
dGF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlz
SlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGluVmFsdWUpKSB8fCBhc09i
amVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2JqZWN0KGluVmFs
dWUpLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9i
amVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vy
c2lvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobV9leGVjLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CiAKQEAgLTY5NCw3ICs2OTUsNyBAQCBORVZF
Ul9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAg
ICAgICAgICAgICAgICBpbmRleFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc0pTQXJy
YXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkgJiYgYXJyYXktPmNhbkdldEluZGV4KGlu
ZGV4KSkKKyAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGFycmF5KSAmJiBhcnJheS0+Y2Fu
R2V0SW5kZXgoaW5kZXgpKQogICAgICAgICAgICAgICAgICAgICBpblZhbHVlID0gYXJyYXktPmdl
dEluZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3Q7CkBAIC03MTcsNyArNzE4LDcgQEAgTkVWRVJfSU5MSU5FIEpT
VmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBp
ZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAgICAgICBhcnJh
eS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGFycmF5LCBtX2V4ZWMsIGlu
ZGV4U3RhY2subGFzdCgpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KSAmJiBhcnJh
eS0+Y2FuU2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0KCkpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNKU0FycmF5KGFycmF5KSAmJiBhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xv
YmFsRGF0YSgpLCBpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KGFycmF5LCBtX2V4ZWMsIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJl
ZFZhbHVlKTsKQEAgLTczMCw3ICs3MzEsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6
OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgb2JqZWN0U3RhcnRTdGF0ZToK
ICAgICAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgICAgIEFT
U0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0Fy
cmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoaW5WYWx1ZSkpICYmICFhc09iamVj
dChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpOworICAgICAgICAgICAgICAg
IEFTU0VSVCghaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUpKSAmJiAhYXNPYmplY3QoaW5WYWx1
ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICAgICAgICAgICAgICBpZiAob2Jq
ZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJz
aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihtX2V4ZWMsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKIApAQCAtNzk3LDcgKzc5OCw3IEBAIE5FVkVS
X0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdCkgfHwgb2JqZWN0LT5pbmhl
cml0cygmSlNBcnJheTo6c19pbmZvKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KG9i
amVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkKICAgICAgICAgICAg
ICAgICAgICAgZ290byBhcnJheVN0YXJ0U3RhdGU7CiAgICAgICAgICAgICAgICAgZ290byBvYmpl
Y3RTdGFydFN0YXRlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKaW5kZXggMTRmMDkzNTk2NzZjNzVlNzNhZTU1YjVjYTJhMWYyMzMyNDRiMzJm
Yi4uOWNjMjk2MTdhZTJhMmU5MzM5NTg0ZTAyNWFlODQwMjJiMmUwMWZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNDYsMTUgKzQ2LDIyIEBAIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPYmplY3QpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU05vbkZpbmFsT2JqZWN0KTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGaW5h
bE9iamVjdCk7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTT2JqZWN0KTsKKwog
Y29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yID0gIkF0dGVt
cHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIjsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAwLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTT2JqZWN0KSB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNGaW5hbE9iamVjdDo6c19pbmZv
ID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0ZpbmFsT2JqZWN0KSB9OwogCi12b2lkIEpTRmluYWxPYmplY3Q6OnZ0YWJsZUFuY2hvcigpCit2
b2lkIEpTRmluYWxPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxK
U0ZpbmFsT2JqZWN0Kj4oY2VsbCktPkpTRmluYWxPYmplY3Q6On5KU0ZpbmFsT2JqZWN0KCk7Cit9
CisKK3ZvaWQgSlNOb25GaW5hbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7Ci0gICAg
cHJpbnRmKCJTb21ldGhpbmcgVmlzdWFsIFN0dWRpbyBjYW4ndCBvcHRpbWl6ZSBhd2F5LlxuIik7
CisgICAganNDYXN0PEpTTm9uRmluYWxPYmplY3QqPihjZWxsKS0+SlNOb25GaW5hbE9iamVjdDo6
fkpTTm9uRmluYWxPYmplY3QoKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCkBA
IC04MSw4ICs4OCw5IEBAIHZvaWQgSlNPYmplY3Q6OmZpbmFsaXplKEpTQ2VsbCogY2VsbCkKICAg
ICBkZWxldGUgW10ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCktPm1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpOwogfQogCi12b2lkIEpTT2JqZWN0Ojp2dGFibGVBbmNob3IoKQordm9pZCBKU09iamVjdDo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCktPkpT
T2JqZWN0Ojp+SlNPYmplY3QoKTsKIH0KIAogdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZjU2OGQ0MmE0NmYyMThjZmE0ZThiY2U4MjNhMjlkYjk3
YTRjNDZlNi4uMzYzZWMzMDYxM2U4Y2Y5Mjc2ZTA4ZjdhM2Y4ZjgxMTYzOGFmMThkZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC04MCw3ICs4MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9yKCk7CisgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC0yNDMsNiArMjQzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6
aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGlubGluZVN0b3JhZ2UsIHN0YXRpY19jYXN0PHZvaWQqPihpbmxpbmVTdG9yYWdl
KSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyArIDEpKTsKICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkp
OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yNTUsMTEgKzI1Niw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFs
T2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxp
a2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICBKU09iamVjdChKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7Ci0g
ICAgICAgIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSkKLSAgICAgICAgICAgIDogSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2spCi0gICAg
ICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGlubGluZVN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVy
OjpVbmNoZWNrZWQpCi0gICAgICAgIHsKLSAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNv
bWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCkBAIC0zMTksMTIgKzMxNSw5
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+
PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgICAg
ICAgICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBtX2lubGluZVN0b3JhZ2UpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotICAgIAogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQog
ICAgICAgICB7CkBAIC0zMzUsNiArMzI4LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG1faW5saW5lU3RvcmFn
ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNOb25GaW5hbE9iamVj
dCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7CiAgICAgICAgICAgICBBU1NF
UlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNOb25G
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKGNs
YXNzSW5mbygpKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTM0OSwxMSArMzQzLDYg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49
IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
SlNPYmplY3QgQmFzZTsKIAotICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KFZQdHJTdGVh
bGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBt
X2lubGluZVN0b3JhZ2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAg
c3RhdGljIEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9i
amVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBK
U0ZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKQEAgLTM3NCwyMSAr
MzYzLDMyIEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhLCBtX2lubGluZVN0b3JhZ2UpOwogICAgICAgICAgICAgQVNT
RVJUKCEoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkgJSBz
aXplb2YoZG91YmxlKSkpOwogICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNh
cGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIAor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2Jq
ZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CiAgICAgfTsKIAoraW5saW5lIGJvb2wgaXNKU0Zp
bmFsT2JqZWN0KEpTQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkg
PT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbzsKK30KKworaW5saW5lIGJvb2wgaXNKU0ZpbmFsT2Jq
ZWN0KEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmlzQ2VsbCgpICYmIGlzSlNG
aW5hbE9iamVjdCh2YWx1ZS5hc0NlbGwoKSk7Cit9CisKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpCiB7CiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihK
U0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpID09IE9CSkVDVF9PRkZTRVRPRihKU05vbkZp
bmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggZjQzMTA0
MjlhNzdiNjYxODBkNDNlZGJhZWEzN2I4ZDY0NjBmOGE1Ny4uNzIwN2E0YzVjY2NkYmRhMmE3NTA0
NTUzMWU5NDliZTFlMDRmZDllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTgxLDYgKzgxLDExIEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3I7CiB9CiAKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit7CisgICAganNDYXN0PEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqPihjZWxsKS0+SlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKTsKK30KKwogSlNWYWx1
ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlmaWVyID0gbV9qc1N0cmluZ3Nb
aV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggOTdhNTAzMjZiZGM5ZWNjNGI5ODI0ZTJmNTJjZTZj
MjA2MGI1NjRkMi4uY2UyZTQ0ZTgxMWIzYzY0YjI0NWY4OTE1MDg2MDBjZGY3YTQxNjA2MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaApAQCAtNTIsNyArNTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEpOwog
ICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAg
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgCiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiksICZzX2luZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCBkOTBjNjhjODAxYjYzZTFlOTk3NjU2
ODY0Njc0OGQ3NWNmYjA5NGQ3Li4zMDg0ZjNmMjk2NjU1MTA5NTU1YzU1MjI1OWVjZDU0ODNhZDhh
YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRp
Y1Njb3BlT2JqZWN0LmNwcApAQCAtMzQsNiArMzQsMTEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTU3RhdGljU2Nv
cGVPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNTdGF0aWNTY29wZU9iamVjdCkgfTsKIAordm9pZCBKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNTdGF0aWNT
Y29wZU9iamVjdCo+KGNlbGwpLT5KU1N0YXRpY1Njb3BlT2JqZWN0Ojp+SlNTdGF0aWNTY29wZU9i
amVjdCgpOworfQorCiB2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU1N0YXRpY1Njb3BlT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
aAppbmRleCAyM2EzYWNhZDc4Y2VlNGU3NjA3OWU4OWUyYWE0NWYwNTVmZDUyZmZmLi5kZTBiODE2
MjE3ODk3OWU2MDEwM2FiMzIyNmViMWRiYTAzMjQwYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCkBAIC02Nyw3ICs2Nyw5
IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUuZ2V0
KCksICZtX3N5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVnaXN0
ZXJTdG9yZSArIDEpKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgICAgICBTeW1ib2xUYWJsZSBtX3N5
bWJvbFRhYmxlOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZWdpc3RlclN0b3Jl
OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5k
ZXggMGU2YTQ4YTA3YWY5ZTNiOWI3M2YyM2Q0YTgyNGQ5ZWFmZmEwODdkZS4uNjJjYzU1Y2ZjYzAx
ODNiNWUzMDM4MWE0YzExNGM3ZjY0ZmQwYzBiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcApAQCAtNDUsOSArNDUsMTAgQEAgdm9pZCBKU1N0cmluZzo6Um9w
ZUJ1aWxkZXI6OmV4cGFuZCgpCiAgICAgYXBwZW5kKGpzU3RyaW5nKTsKIH0KIAotSlNTdHJpbmc6
On5KU1N0cmluZygpCit2b2lkIEpTU3RyaW5nOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAg
ICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRyKTsKKyAgICBKU1N0
cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOworICAgIHRoaXNPYmpl
Y3QtPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKIH0KIAogdm9pZCBKU1N0cmluZzo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggN2NmODM4MjE5YTViYTUzZjE3ZmFiZDg5MGRk
ZTJiYzJlMmQyMDJjNC4uZDUxYTIzZmYyODM2YzlkNzY5YTJlNzVjMWI3YTIxZTRmMzZkMjVjMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC02OSw2ICs2OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgICAgICBjbGFzcyBSb3Bl
QnVpbGRlciB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIFJvcGVCdWlsZGVyKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTE5Nyw4ICsxOTksNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIH5KU1N0cmluZygpOwotCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQpAQCAt
MjQzLDExICsyNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgSlNTdHJpbmcoVlB0clN0ZWFsaW5nSGFja1R5cGUpIAotICAgICAgICAgICAgOiBKU0NlbGwo
VlB0clN0ZWFsaW5nSGFjaykKLSAgICAgICAgewotICAgICAgICB9Ci0KICAgICAgICAgdm9pZCBy
ZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNs
b3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2Uo
VUNoYXIqKSBjb25zdDsKQEAgLTI3OSwxNiArMjc0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7CiAKLSAgICAvLyBXaGVuIGFuIG9iamVjdCBp
cyBjcmVhdGVkIGZyb20gYSBkaWZmZXJlbnQgRExMLCBNU1ZDIGNoYW5nZXMgdnB0ciB0byBhICJs
b2NhbCIgb25lIHJpZ2h0IGFmdGVyIGludm9raW5nIGEgY29uc3RydWN0b3IsCi0gICAgLy8gc2Vl
IDxodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvbWljcm9zb2Z0LnB1YmxpYy52Yy5sYW5n
dWFnZS9tc2cvNTVjZGNlZmVhZjc3MDIxMj4uCi0gICAgLy8gVGhpcyBicmVha3MgaXNKU1N0cmlu
ZygpLCBhbmQgd2UgZG9uJ3QgbmVlZCB0aGF0IGhhY2sgYW55d2F5LCBzbyB3ZSBjaGFuZ2UgdnB0
ciBiYWNrIHRvIHByaW1hcnkgb25lLgotICAgIC8vIFRoZSBiZWxvdyBmdW5jdGlvbiBtdXN0IGJl
IGNhbGxlZCBieSBhbnkgaW5saW5lIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBhIEpTU3RyaW5nIGNv
bnN0cnVjdG9yLgotI2lmIENPTVBJTEVSKE1TVkMpICYmICFkZWZpbmVkKEJVSUxESU5HX0phdmFT
Y3JpcHRDb3JlKQotICAgIGlubGluZSBKU1N0cmluZyogZml4dXBWUHRyKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgSlNTdHJpbmcqIHN0cmluZykgeyBzdHJpbmctPnNldFZQdHIoZ2xvYmFsRGF0
YS0+anNTdHJpbmdWUHRyKTsgcmV0dXJuIHN0cmluZzsgfQotI2Vsc2UKLSAgICBpbmxpbmUgSlNT
dHJpbmcqIGZpeHVwVlB0cihKU0dsb2JhbERhdGEqLCBKU1N0cmluZyogc3RyaW5nKSB7IHJldHVy
biBzdHJpbmc7IH0KLSNlbmRpZgotCiAgICAgaW5saW5lIEpTU3RyaW5nKiBhc1N0cmluZyhKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc1N0cmlu
ZygpKTsKQEAgLTMwNCw3ICsyODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAg
IGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgIHJldHVybiBn
bG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEs
IGMpOwotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVh
dGUoKmdsb2JhbERhdGEsIFVTdHJpbmcoJmMsIDEpLmltcGwoKSkpOworICAgICAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZygmYywgMSkuaW1wbCgpKTsKICAg
ICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0KQpAQCAtMzE0
LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBVQ2hhciBjID0gc1tvZmZzZXRd
OwogICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhn
bG9iYWxEYXRhLCBjKTsKLSAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0
cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9m
ZnNldCwgMSkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEs
IFN0cmluZ0ltcGw6OmNyZWF0ZShzLmltcGwoKSwgb2Zmc2V0LCAxKSk7CiAgICAgfQogCiAgICAg
aW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBjaGFyKiBzKQpAQCAtMzIyLDEzICszMDcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEFTU0VSVChzKTsKICAgICAgICAgQVNTRVJUKHNbMF0pOwogICAgICAgICBBU1NF
UlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6
OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZyhzKS5pbXBsKCkpKTsKKyAgICAgICAgcmV0dXJu
IEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmcocykuaW1wbCgpKTsKICAgICB9
CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBBU1NFUlQocy5s
ZW5ndGgoKSA+IDEpOwotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3Ry
aW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKSk7CisgICAgICAgIHJldHVybiBKU1N0
cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBzLmltcGwoKSk7CiAgICAgfQogCiAgICAgaW5saW5l
IEpTU3RyaW5nKiBKU1N0cmluZzo6Z2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
KQpAQCAtMzUwLDcgKzMzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGMg
PD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgICAgIHJldHVybiBnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJp
bmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3Ry
aW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUg
SlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzc2LDcgKzM2MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQog
ICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
aXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2Jh
bERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSkpOwor
ICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEs
IFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgfQog
CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpA
QCAtMzkxLDcgKzM3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGMgPD0g
bWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxE
YXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6
OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZShzLmlt
cGwoKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRl
SGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBv
ZmZzZXQsIGxlbmd0aCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0
cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCkBAIC00MDQs
MTIgKzM4OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChjIDw9IG1heFNp
bmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+
c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVh
dGVIYXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBzLmltcGwoKSkpOworICAgICAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIHMuaW1wbCgpKTsKICAg
ICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEs
IEpTU3RyaW5nOjpjcmVhdGVOdWxsKCpnbG9iYWxEYXRhKSk7CisgICAgICAgIHJldHVybiBKU1N0
cmluZzo6Y3JlYXRlTnVsbCgqZ2xvYmFsRGF0YSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTU3Ry
aW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4ganNFbXB0eVN0cmlu
ZygmZXhlYy0+Z2xvYmFsRGF0YSgpKTsgfQpAQCAtNDQ4LDcgKzQzMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgaXNK
U1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRy
OyB9CisgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXND
ZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gJkpTU3RyaW5nOjpzX2luZm87IH0K
IAogICAgIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuY3BwCmluZGV4IDlmMzhlYTk4NzJjNGY3MmIxMTgzYWQxYmU4Y2U0ZmZmYTgwMDU5
NzcuLjcwNmUzZGViYmMzY2Y2YjZmYTJiMWZmZTY5MzNmZDk1MDljZTJhMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCkBAIC0z
Nyw4ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU1ZhcmlhYmxlT2JqZWN0Ojp+SlNW
YXJpYWJsZU9iamVjdCgpCit2b2lkIEpTVmFyaWFibGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogeworICAgIGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2VsbCktPkpTVmFyaWFibGVP
YmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCk7CiB9CiAKIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaAppbmRleCBlNDlmYjcxZGYyZWNiOWRmNzk2YjJlN2I4ZGVkOWU3
Njg0YWFkODMwLi44YTVjNWEwZjMxNGY5MmQ2MmQzZDVlNTczNjVlYWEzYjVmZGQ0YzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CiAKLSAgICAgICAg
dmlydHVhbCB+SlNWYXJpYWJsZU9iamVjdCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lk
IHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCBjYTViZDg3NWMzZDBh
NmNiZjVhODgyYjkxZTU2YTQ4OWNiOWQ3NWQyLi5mOGY1NzI3ZDgyY2Q2NzY5NjIyNjgxOGVlZTc5
MGQ5Y2Q0MmQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
V3JhcHBlck9iamVjdC5jcHAKQEAgLTI1LDEwICsyNSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBwZXJPYmplY3QpOwotCi1KU1dyYXBwZXJP
YmplY3Q6On5KU1dyYXBwZXJPYmplY3QoKQotewotfQorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoSlNXcmFwcGVyT2JqZWN0KTsKIAogdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5kZXggNzM3MTNjMGIz
NGM2NDI0MmE4NGYyYWVkZDE3ZDUxNTU5NmExMGU0Ni4uNjViNGJkYjdmNjFlMDAwMTExNTJlMWEw
ZDVhY2UxZWFiNzc3ZDk3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
Ci0gICAgICAgIHZpcnR1YWwgfkpTV3JhcHBlck9iamVjdCgpOwotICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRlcm5hbFZhbHVlOwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4
IDAwNjU1OWRkZGE0ODJhYmZjYTliZWQxYTBjMTQ1YTRhOTMwNjg3MmUuLjU4YjA5MTIyZDRhYzJk
ZWU3MmU1NmNjYWVlNDMyYjU1ZmQ0MDZjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC01OSw2ICs1OSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7CiAKIG5hbWVz
cGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihNYXRoT2JqZWN0KTsK
KwogY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmSlNOb25G
aW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om1hdGhUYWJsZSwgQ1JFQVRFX01FVEhP
RF9UQUJMRShNYXRoT2JqZWN0KSB9OwogCiAvKiBTb3VyY2UgZm9yIE1hdGhPYmplY3QubHV0LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZGRlOTI3ODQ4YWQ4ZTJlY2U4YzAwM2JlN2FkYmMxYWNjNGY0
ZmM2Ny4uYjZhZmY5MTZlNGRkNGI4YjEyMzk2NjQ2M2NkNTg2ODI3M2E4YjBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5m
byBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDA4NGM2M2YxN2U4ZDMxMGZjZjUzYzcxMzc1NmEx
YjhhZDdlNDdjMDIuLmU4NjNlODYzMDk4MjM4N2IyYTIzZWEyODE5ZjdiOGFkMGE4ZDVlNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTQyLDYgKzQyLDggQEAgc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JN
aW5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE51bWJlckNvbnN0cnVj
dG9yKTsKKwogY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6bnVtYmVy
Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShOdW1iZXJDb25zdHJ1Y3Rvcikg
fTsKIAogLyogU291cmNlIGZvciBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKaW5kZXggYjc1MTA1M2ZiOTY2
YmRlODJjMGNkYWJlZTg0MTRiYzUwOWE4NWYyMS4uMWZlYTI1NDY0N2E0ZWQwMzgyNjY5MTc2NTU0
MjU4MGU5NGIzZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoTnVtYmVyT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVjdDo6
c19pbmZvID0geyAiTnVtYmVyIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKE51bWJlck9iamVjdCkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggM2JjYjliYjVkY2YzNDkx
OGM3MWZmNjYxOTU0Y2VhMmY5ZjYyNzVhNy4uNDYxMmI1NmQyYmE1NWU0Yzk4M2MyMzM2MmI5NjE1
YWY4MzQwM2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCkBAIC02OSw2ICs2OSw3IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIk51bWJlciIsICZOdW1iZXJPYmplY3Q6OnNfaW5mbywgMCwK
ICovCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyUHJvdG90eXBlKTsKK0FTU0VS
VF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE51bWJlclByb3RvdHlwZSk7CiAKIE51bWJlclByb3Rv
dHlwZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBOdW1iZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNTk1MmNlODA5Yzg3ZDJjMzgwNWFjMmI5N2NhNjZjMDY4N2RlYzM1MC4uNjVkMjhj
MThjMzMzYjNjMzgyYWFkMjA0OTFmOTk0MjdkNTQ2MWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtNTUsNiArNTUs
OCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cklzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKE9iamVjdENvbnN0cnVjdG9yKTsKKwogY29uc3QgQ2xhc3NJ
bmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1
bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShPYmplY3RDb25zdHJ1Y3RvcikgfTsKIAogLyogU291cmNlIGZvciBP
YmplY3RDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggYTFlNDk2NjM0NjZkMzQwZTVjZjIxMTY5MWYw
ODUyNGFlNTQyMmM5MS4uM2Y0ZGMxOWRiMmEyMmFlOTM4NTY1NDRkMTQ3Yzg0NjY3NTg5YjFiMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCkBAIC00NCw2ICs0NCw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoT2JqZWN0UHJvdG90eXBlKTsK
KwogY29uc3QgQ2xhc3NJbmZvIE9iamVjdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVU
YWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmplY3RQcm90b3R5cGUpIH07CiAKIC8qIFNvdXJj
ZSBmb3IgT2JqZWN0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKaW5kZXggOTdkYWUzZTA4YmY2MmMyOTRiOWI2ODY2Y2ZjYjc3YTM1Y2M4
NGRmNC4uY2EyMTc0ZmExZTcyMDc4OTMzYzM1M2IxNDc1ZjhhZTA5OTY2MGIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtNDcsNyArNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKChsZW5ndGgxICsgbGVuZ3RoMikgPCBsZW5ndGgx
KQogICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKIAotICAg
ICAgICByZXR1cm4gZml4dXBWUHRyKCZnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHMxLCBzMikpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZShnbG9iYWxE
YXRhLCBzMSwgczIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1Miwg
Y29uc3QgVVN0cmluZyYgdTMpCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpZiAoKGxlbmd0aDEgKyBsZW5ndGgyICsgbGVuZ3RoMykgPCBsZW5ndGgzKQogICAgICAg
ICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKIAotICAgICAgICByZXR1
cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCB1MSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUyKSwg
anNTdHJpbmcoZ2xvYmFsRGF0YSwgdTMpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3Jl
YXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEpLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCB1MiksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUzKSk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0
ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNvdW50KQpAQCAtMjMwLDggKzIzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPCB2Mi5hc051bWJlcigpOwogCi0gICAgICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKLSAg
ICAgICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdjEpICYmIGlzSlNTdHJpbmcoZ2xvYmFs
RGF0YSwgdjIpKQorICAgICAgICBpZiAoaXNKU1N0cmluZyh2MSkgJiYgaXNKU1N0cmluZyh2Mikp
CiAgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNT
dHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpOwogCiAgICAgICAgIGRvdWJsZSBuMTsKQEAgLTI2
NSw4ICsyNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkg
JiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpIDw9IHYy
LmFzTnVtYmVyKCk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2
MSkgJiYgaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2MikpCisgICAgICAgIGlmIChpc0pTU3RyaW5n
KHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkKICAgICAgICAgICAgIHJldHVybiAhKGFzU3RyaW5nKHYy
KS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFzU3RyaW5nKHYxKS0+dmFsdWUoY2FsbEZyYW1lKSk7CiAK
ICAgICAgICAgZG91YmxlIG4xOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKaW5kZXggMDVkZjMyYjE1MzYzYTdkMmIyMGZiOGVlNDc5NmExYTVmYjAwZDBlNy4uNTk0YjIy
NTkyMGQ5NDg0YTQxOTU4Y2NmYWVmM2IxYTg1MGJkOWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yNDgsMTEgKzI0OCwxMyBAQCB2b2lkIFJlZ0V4cDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICBtX251bVN1
YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOwogfQogCi1SZWdFeHA6On5SZWdF
eHAoKQordm9pZCBSZWdFeHA6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIFJlZ0V4cCog
dGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHAqPihjZWxsKTsKICNpZiBSRUdFWFBfRlVOQ19URVNU
X0RBVEFfR0VOCiAgICAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpLT5jbGVh
clJlZ0V4cCh0aGlzKTsKICNlbmRpZgorICAgIHRoaXNPYmplY3QtPlJlZ0V4cDo6flJlZ0V4cCgp
OwogfQogCiBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmcoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBm
bGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggYWEzYTYxZjQ2
ZjljMWEzNGY3MzExNmE4YWY0MWZjZTRjMDQ2NDA2ZS4uNjVlYjQ4NDk5OTJjYTVlNmUxODlmZTI1
NDJhZGM4YTc1ZmI5ZGRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgK
QEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKLSAgICAgICAgflJlZ0V4cCgpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIGJvb2wgZ2xv
YmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7IH0KICAgICAgICAgYm9v
bCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggMDNkMmZkMmMwZWVhYTA0NTgxYzU4ZDZlOTE2MWY0YTBmZTliMWY4OS4uYTI4
NzM3N2EyMmU5MmVlNmQwYWUxNWQyOTI0Yjc1OGQ3MmRlMzJiYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMTE1LDYg
KzExNSwxMSBAQCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAor
dm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganND
YXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oY2VsbCktPlJlZ0V4cENvbnN0cnVjdG9yOjp+UmVnRXhw
Q29uc3RydWN0b3IoKTsKK30KKwogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJy
YXkoRXhlY1N0YXRlKiBleGVjKQogICAgIDogSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkp
CiB7CkBAIC0xNDAsNiArMTQ1LDExIEBAIFJlZ0V4cE1hdGNoZXNBcnJheTo6flJlZ0V4cE1hdGNo
ZXNBcnJheSgpCiAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0
ZSo+KHN1YmNsYXNzRGF0YSgpKTsKIH0KIAordm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxs
KS0+UmVnRXhwTWF0Y2hlc0FycmF5Ojp+UmVnRXhwTWF0Y2hlc0FycmF5KCk7Cit9CisKIHZvaWQg
UmVnRXhwTWF0Y2hlc0FycmF5OjpmaWxsQXJyYXlJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkID0gc3RhdGljX2Nhc3Q8UmVnRXhwQ29u
c3RydWN0b3JQcml2YXRlKj4oc3ViY2xhc3NEYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXggNWY5MzBlYjg5NTdkMTVh
ZmM1YjAzYjM4MzE2MGRkYjUwOWE0Y2JlMy4uN2ZiODhkMmI0NDZhMmE0ZjE2ZTNmNWE3YTY4ODVj
NWY1ZGQ4YWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5oCkBAIC05OCw2ICs5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oCmluZGV4IDFjYzg5OGUyNTZkNTE2YTA0NTg2MmJjMDE1MTNiZTY3ZmE4ZWE4
NTkuLjFjMTE3YjBkODViNWM2OTY0ZjBmYjNjZTIzOTNlZjVmYmYwZGU5MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCkBAIC0z
Nyw3ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmVnRXhwLT5maW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGN0b3JQcml2YXRlKTsKICAgICAgICAgICAgIHJl
dHVybiByZWdFeHA7CiAgICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB+UmVnRXhwTWF0Y2hlc0Fy
cmF5KCk7CisgICAgICAgIH5SZWdFeHBNYXRjaGVzQXJyYXkoKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDcyMTNkYzI3YzE1NTc3Y2IyODViYjQyODA4
NzAzODM4NmJlZmM4NDMuLjQ1NTNmN2FkMGQ1MmNlOGYyZWRhYTIyOTdhMzA1N2UyYTI2NjdjYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApA
QCAtNzUsOCArNzUsOSBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
fQogCi1SZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3QoKQordm9pZCBSZWdFeHBPYmplY3Q6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxSZWdFeHBPYmplY3QqPihjZWxsKS0+
UmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2JqZWN0KCk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGExMTdmMzYyYzNl
MzNhODc5MTMyYTZjYTIyYjFiZWY4NWRhYzdmNTkuLmVlOThiNjYwMjNmODMwZjliNjRlZGYxZDY4
MzI1ZWYyZTQ1MzJkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5oCkBAIC00NCw4ICs0NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIG9iamVjdDsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgflJlZ0V4cE9iamVj
dCgpOwotCiAgICAgICAgIHZvaWQgc2V0UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UmVnRXhwKiByKSB7IGQtPnJlZ0V4cC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcik7IH0KICAgICAg
ICAgUmVnRXhwKiByZWdFeHAoKSBjb25zdCB7IHJldHVybiBkLT5yZWdFeHAuZ2V0KCk7IH0KIApA
QCAtNzksNiArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKaW5kZXggNzlmMmE3YTQ4NGE1MzAxMTUz
Zjg1MzdlM2E4ZDFlYTUzOTk1ZmI3Mi4uMDk5ZjdmZGU2OGJiYmM3NmI3N2Y0Mjk2ZjZlODc2YTFm
NzFmOGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5j
cHAKQEAgLTI5LDkgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVNjb3BlQ2hhaW5Ob2Rl
Ojp+U2NvcGVDaGFpbk5vZGUoKQotewotfQorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
U2NvcGVDaGFpbk5vZGUpOwogCiAjaWZuZGVmIE5ERUJVRwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggNDgzODVkMGNiZTFhNDg4YWU3OWNhYTZhYTMx
NTgxZDc0NjAwYzY4Zi4uZmRlNjkwZWI0ZDhkZDFiZjE5YzU3YTI3YmMzODE1YjVkYTQwN2M2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApAQCAtNDUsOCAr
NDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB+U2NvcGVDaGFpbk5vZGUoKTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRleCAyMTI4M2RiZDIyNDI1
YTIwNzgwYjMzYTFhMzFlNzdiMjgzYjI2ZmFkLi5mYmQ5ZDVmYmQ5N2NjMDNiYjRkNzZlYjIwY2Rh
NDliOGNkMjU3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihTdHJpY3RFdmFsQWN0aXZh
dGlvbik7CisKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6c19pbmZvID0g
eyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJp
Y3RFdmFsQWN0aXZhdGlvbikgfTsKIAogU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxB
Y3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA5NjU3MGIyYzA1YWQ5MWE5ZWJj
Y2U1OTkxNzViZjg4YjNlNGVhYTFjLi5kMmY3NWEwNjBiNTVjNGY3MWM2OWFmYjZmNTI1OGZlMjkw
ODU4MjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC00Niw2ICs0Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
CiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKK0FT
U0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ0NvbnN0cnVjdG9yKTsKIAogU3RyaW5n
Q29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCmluZGV4IDNlZWQyNjcyMzEzNDE0YjEzZGFmYjRmZDk2MjkyYTcyM2U4ZDZm
OGQuLjRhMjQ2OThmYjE2OWU0YTY1OTUwOGEyOGFhM2U3OWJjMWNjZjVlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5n
T2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ09iamVjdCk7CiAK
IGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZKU1dy
YXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJpbmdPYmpl
Y3QpIH07CiAKQEAgLTM0LDEwICszNSw2IEBAIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZv
aWQgU3RyaW5nT2JqZWN0Ojp2dGFibGVBbmNob3IoKQotewotfQotCiB2b2lkIFN0cmluZ09iamVj
dDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogc3Ry
aW5nKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBkNjVlY2M1NDMyYmEx
OTVkOWE2ZTQzODdlMmJmMDgxZTVkMjQwNDg5Li44MDZkMDdiM2Q5MjhlYjEwNTc2MTlhMzgyYWZi
YzllYzcxZDBhYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaApAQCAtMzAsOCArMzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIHZ0YWJsZUFuY2hvcigpOwotCiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDNk
ZTg5NTM0MjI2N2ZkNzlhZGNiNDFhYTIxNTY3NTZjNGVmYWQ2MzIuLjliZjE4ZGU2OWFlNmE2MWRi
ZDE2YTllM2RhNWY0ZjAzOGI1ZGQ5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNDUsNiArNDUsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV1RGOwogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
U3RyaW5nUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ1By
b3RvdHlwZSk7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNmI0Y2EyYmZmYjRjOTYxOTY2
MDMxMGMyYWFhYzEwOTFkYjI3Njc3Ny4uZGRhOGM3M2U5MmRmNmQxMzQ4MDA5NGQyNmE1MjgzYzEx
OTdlMzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CkBAIC0yMTgsOCArMjE4LDkgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgICAgICBtX2dsb2JhbE9i
amVjdC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPm1fZ2xvYmFsT2JqZWN0LmdldCgp
KTsKIH0KIAotU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKK3ZvaWQgU3RydWN0dXJlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8U3RydWN0dXJlKj4oY2VsbCktPlN0cnVjdHVy
ZTo6flN0cnVjdHVyZSgpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCmluZGV4IGUzNzJiMjAyNjVmZWMwNDJjNDgwZTA5ZTM4N2E2YWY5MjM5
YjhjNGMuLjkyZTFiM2IzMzA5ODcyMmE2YzA4MWZhOWM4ZmJjYzVjZjk4MmQ5ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCi0gICAgICAgIH5TdHJ1Y3R1cmUo
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBU
aGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKICAgICAgICAgc2l6ZV90IGFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUp
OwpAQCAtMzM1LDE2ICszMzUsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQg
SlNDZWxsOjpzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpID09IHRoaXMtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CiAgICAgICAgIG1fc3RydWN0
dXJlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlubGlu
ZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKKyAgICBpbmxpbmUg
Y29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OnZhbGlkYXRlZENsYXNzSW5mbygpIGNvbnN0CiAgICAg
ewogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUu
dW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7CisgICAgICAgIEFTU0VSVChtX3N0cnVjdHVy
ZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKSA9PSBtX2NsYXNzSW5mbyk7CiAjZWxzZQot
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOworICAgICAgICBBU1NFUlQo
bV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fY2xhc3NJbmZvKTsKICNlbmRpZgorICAgICAg
ICByZXR1cm4gbV9jbGFzc0luZm87CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIE1h
cmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNDZWxsKiBjZWxsKQpAQCAtMzgwLDYgKzM4MiwyNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlu
bGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IG1fY2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
CisgICAgICAgICwgbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQorICAg
IHsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlD
ZWxsVGFnKQorICAgIHsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAgICAgQVNTRVJU
KGdsb2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CisgICAgICAgIGdsb2JhbERhdGEu
c2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZSkKKyNl
bmRpZgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0RWFybHlWYWx1ZShnbG9iYWxEYXRhLCB0
aGlzLCBzdHJ1Y3R1cmUpOworICAgICAgICBtX2NsYXNzSW5mbyA9IHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCk7CisgICAgICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhh
dmUgYSByZWFsIHN0cnVjdHVyZS4KKyAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICFnbG9i
YWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIFN0cnVjdHVyZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2EwODU2OTcwY2I0NGJlYWQwMWIwNGNkYjc5
Mjg1YzY1MmFhMTA2Zi4uYWZiMmQ5NTAxODg2N2Y5ZGI3ZjQ0MWYyOGM4OTNiMTBlMmE2MDFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cApAQCAtMzksOCArMzksOSBAQCBTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotU3RydWN0
dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCit2b2lkIFN0cnVjdHVyZUNoYWluOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8U3RydWN0dXJlQ2hhaW4qPihjZWxsKS0+U3Ry
dWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpOwogfQogCiB2b2lkIFN0cnVjdHVyZUNoYWlu
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCAyODFm
NjAyNGU0ZTZkNGM3OWJiMzU5YzBkMTdhY2M1MzE0MGE0NDEwLi4wMWE1OWJmMTk3MjExMWQxZDMz
ZmRiYTExMDQ0MTdiMDg0NDE1MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKLSAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7CisgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2Vy
dGlvbnMuaAppbmRleCBkNGY1ZDgwOTg1ZGI3YTkxNTY0Mjk4ODNmMDUzZjIxYTM3YjMyMjExLi4y
YjNkNzk0YTRkN2UwMjI3Y2VlMDg2MDVlN2ZkODYwZDdiNDQ5NWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzgzLDQgKzM4MywxMCBAQCB3aGlsZSAoMCkKICNk
ZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGNsYXNzSW5mbykgZG8geyAo
dm9pZClvYmplY3Q7ICh2b2lkKWNsYXNzSW5mbzsgfSB3aGlsZSAoMCkKICNlbmRpZgogCisjaWYg
Q09NUElMRVIoQ0xBTkcpCisjZGVmaW5lIEFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKGts
YXNzKSBDT01QSUxFX0FTU0VSVChfX2hhc190cml2aWFsX2Rlc3RydWN0b3Ioa2xhc3MpLCBrbGFz
cyMjX2hhc190cml2aWFsX2Rlc3RydWN0b3JfY2hlY2spCisjZWxzZQorI2RlZmluZSBBU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUihrbGFzcykKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX0Fz
c2VydGlvbnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmpl
Y3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4
IDhlYTVkMjk1MzBmZDY4MWMwZGY2MjJmNjA0MjQ3YjI1ZDUyZTQzNWIuLjY4MDBmZGY0NGFmZjEy
N2NlMDBlNjFiNTI0Mjg0NGI5MzAxNWM3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAKQEAgLTQ2LDYgKzQ2LDExIEBAIFVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0
SW1wKCkKICAgICAgICAgZkpTVXNlck9iamVjdC0+UmVsZWFzZSgpOwogfQogCit2b2lkIFVzZXJP
YmplY3RJbXA6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxVc2VyT2JqZWN0
SW1wKj4oY2VsbCktPlVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCk7Cit9CisKIENhbGxU
eXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNh
bGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VXNlck9i
amVjdEltcCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXgg
ZDY0OGE5NWJiNTIxOGM5ZjA5NDk3OGI4NjVjMmY4YzFkM2Q3NTdlZC4uNDlhNjUzZTBjMTMzMzNl
NWIzYjk4M2I4NWU2YzBjODlmM2I0OWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsK
ICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+VXNlck9iamVjdEltcCgpOworICAgIH5Vc2VyT2Jq
ZWN0SW1wKCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC01MywxMiArNTQsMTIgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHZpcnR1YWwg
SlNWYWx1ZSBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMpOworICAgIEpTVmFsdWUgY2Fs
bEFzRnVuY3Rpb24oRXhlY1N0YXRlKik7IC8vIFRPRE86IEZpZ3VyZSBvdXQgaG93IHRvIHJlLXZp
cnR1YWxpemUgdGhpcyB3aXRob3V0IGJyZWFraW5nIHRoZSBmYWN0IHRoYXQgd2UgZG9uJ3QgYWxs
b3cgdnB0cnMgaW4gdGhlIEpTQ2VsbCBoaWVyYXJjaHkuCiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUgcHJlZmVycmVkVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OworICAgIGJvb2wgdG9Cb29sZWFu
KEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBUT0RPOiBGaWd1cmUgb3V0IGhvdyB0byByZS12aXJ0dWFs
aXplIHRoaXMgd2l0aG91dCBicmVha2luZyB0aGUgZmFjdCB0aGF0IHdlIGRvbid0IGFsbG93IHZw
dHJzIGluIHRoZSBKU0NlbGwgaGllcmFyY2h5LgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI4
NGMzZDJmMDBlYTFjZGEyM2MyN2EwYzZmNzI1YmZkNzUxMzFlYTMuLmUxNzcyYmE5M2I0NmVjYTM1
NmQ4MWNmNWY4Yjk2YTQxZDVlMWYxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNjQsNyAr
MjY0LDcgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2UyN2NoZWNrSW50ZWdyaXR5QmVmb3Jl
T3BlbmluZ0V2CiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTVjbG9zZUV2CiBfX1pON1dlYkNv
cmUxMkljb25EYXRhYmFzZTlzZXRDbGllbnRFUE5TXzE4SWNvbkRhdGFiYXNlQ2xpZW50RQogX19a
TjdXZWJDb3JlMTJJY29uRGF0YWJhc2VDMUV2Ci1fX1pON1dlYkNvcmUxMkpTRE9NV3JhcHBlcjM0
dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUV2CitfX1pON1dlYkNvcmUxMkpTRE9N
V3JhcHBlcjZzX2luZm9FCiBfX1pON1dlYkNvcmUxMlBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVw
TWVudUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTJwYWdlUHJvcGVydHlFUE5T
XzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQ
TlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKQEAgLTEyNzYsNiArMTI3Niw3IEBAIF9fWk5LN1dl
YkNvcmUxNlZpc2libGVTZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJhbmdlRXYKIF9fWk5LN1dlYkNv
cmUxNlZpc2libGVTZWxlY3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1lbnRFdgogX19aTks3V2ViQ29y
ZTE2VmlzaWJsZVNlbGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRpdGFibGVFdgogX19aTks3V2Vi
Q29yZTE2VmlzaWJsZVNlbGVjdGlvbjVpc0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZUUKK19fWk5LN1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0MjJzY3JpcHRFeGVjdXRpb25D
b250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uMTNtYXRjaGVkTGVuZ3Ro
RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uNW1hdGNoRVJLTjNXVEY2U3RyaW5n
RWlQaQogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb245c2VhcmNoUmV2RVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTQ0MCw3ICsxNDQxLDYgQEAgX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUxMGZy
YW1lQ291bnRFdgogX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUyMWF1dG9yZWxlYXNlZFBhZ2VDb3Vu
dEV2CiBfX1pOSzdXZWJDb3JlOVRyZWVTY29wZTE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRv
bWljU3RyaW5nRQogX19aVFZON1dlYkNvcmUxMkNocm9tZUNsaWVudEUKLV9fWlRWTjdXZWJDb3Jl
MTJKU0RPTVdyYXBwZXJFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZUUKIF9fWlRW
TjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMThQbGF0Zm9ybVN0
cmF0ZWdpZXNFCkBAIC0xNzIzLDExICsxNzIzLDExIEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2Vu
ZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnRFaQogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1Mp
CiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhD
YWxsRGF0YUUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTJ2dGFibGVBbmNob3JFdgogX19aTjNK
U0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05T
XzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMThnZXRPd25Qcm9wZXJ0eVNs
b3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJv
cGVydHlTbG90RQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QyNGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18x
OFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKK19f
Wk4zSlNDMTNSdW50aW1lTWV0aG9kN2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzEzUnVu
dGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRVJOM1dURjZW
ZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCiBfX1pOM0pTQzhCaW5kaW5nczEwUm9v
dE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0
YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQpAQCAtMTc0MCwxNCArMTc0MCwxMyBAQCBfX1pO
M0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpT
T2JqZWN0RVBOU185RXhlY1N0YQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCitfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVO
M1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdEQyRXYKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlMTljcmVhdGVSdW50aW1l
T2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2VDMkVOM1dU
RjEwUGFzc1JlZlB0cklOUzBfMTBSb290T2JqZWN0RUVFCiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0
YW5jZUQyRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDdpc1ZhbGlkRVBTMF8KIF9fWk43
V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE2Y3JlYXRlUm9vdE9iamVjdEVQdgotX19aVFZOM0pT
QzEzUnVudGltZU1ldGhvZEUKICNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCAxNzhiMTMwMzY0
NDcwZTAzOGNlMGUyOWFiODZhMjc5MDBjMTJmODRjLi4xMjc1MDI5MjNkMTc5NzNiMzU3MmIwOWNm
Y2MxYzkyOTJiMjVmZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0xNTQs
NyArMTU0LDcgQEAgSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0TGlu
ZURhc2goRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgaWYgKCFpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKQorICAg
IGlmICghaXNKU0FycmF5KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRGFzaEFycmF5
IGRhc2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRl
eCA1OWJkOWYyOWUxNDE3NWY1ZWIyMGU3ZGViYWM4MTI1M2ViMTE5MTc2Li4yZjQ5OTk0Y2VmYzZk
NzQwOWI0NGRlOWU0NDI3Mzg0MjRiODhkMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTM4LDYgKzM4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihET01Db25zdHJ1Y3Rvck9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihE
T01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCk7CisKIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRI
YXNoVGFibGVGb3JHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlND
OjpIYXNoVGFibGUqIHN0YXRpY1RhYmxlKQogewogICAgIHJldHVybiBET01PYmplY3RIYXNoVGFi
bGVNYXA6Om1hcEZvcihnbG9iYWxEYXRhKS5nZXQoc3RhdGljVGFibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDhjNTc0ZDk4
NDlkMzY0MjE5NGYwMGI3YjgzY2MxMWE5YmY0ZWZiMTUuLjgwZTcxMmIwYmI4MzNkOGU1NjE5MjZm
ODljNTcxN2E4MzBjNDZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0QmFzZS5oIgogCiAjaWYgRU5BQkxFKFdPUktF
UlMpCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCkBAIC00OSw4ICs1MCw5IEBAIEpTRE9N
R2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0CiB7CiB9CiAKLUpTRE9NR2xvYmFsT2JqZWN0Ojp+SlNET01HbG9i
YWxPYmplY3QoKQordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CiB7CisgICAganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpTRE9NR2xvYmFsT2Jq
ZWN0Ojp+SlNET01HbG9iYWxPYmplY3QoKTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtNjUsNiArNjcsMTYg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbFRoaXMqIHQKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwogfQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGluaGVyaXRzKCZKU0RPTVdpbmRv
d0Jhc2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNET01XaW5kb3dC
YXNlKj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoaW5oZXJpdHMo
JkpTV29ya2VyQ29udGV4dEJhc2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29u
c3QgSlNXb3JrZXJDb250ZXh0QmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggODc1NWZmYjg4MWNmYjg0YWJlYTc0NmZkZDg3YzA4
ZTkxMWFlYTE3ZC4uYWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC00
OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RydWN0IEpTRE9NR2xv
YmFsT2JqZWN0RGF0YTsKIAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFs
RGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBjb25z
dCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiA9IDApOwotICAgICAgICB2aXJ0dWFsIH5K
U0RPTUdsb2JhbE9iamVjdCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsK
ICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNH
bG9iYWxUaGlzKik7CiAKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIHsgcmV0dXJuIG1fc3RydWN0dXJl
czsgfQogICAgICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSB7IHJldHVy
biBtX2NvbnN0cnVjdG9yczsgfQogCi0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAg
ICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgICAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gdGhpczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZTY4YmNhMWQ2
MzJlNGM5NWMxMDhkNDI2YjRjZjVlMWU5MWVhNTVlYS4uOGRlNDMyZWRmNjE3MDc3ZTdjMGI4OTI5
NGZlZTE4ZTM0NzVjMzY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCkBAIC02NSw2ICs2NSwxMSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvd1NoZWxs
KgogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChz
dGF0aWNHbG9iYWxzKSk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oY2VsbCktPkpTRE9NV2lu
ZG93QmFzZTo6fkpTRE9NV2luZG93QmFzZSgpOworfQorCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6
dXBkYXRlRG9jdW1lbnQoKQogewogICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5MWYzZjdh
NGQ0YzZjNmNlNjljNzUzYmI5YzVjMTAwZTE0MWM5ZGFhLi44NGMxODYyNGEyYzgwMmYzMjI1NzVl
MjJiOWRlMThhNWM1OGVkN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuaApAQCAtNDAsMTEgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgSlNET01XaW5kb3dCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUq
LCBQYXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKICAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTRE9NV2luZG93U2hlbGwqKTsK
IAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHVibGljOgog
ICAgICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKICAgICAgICAgRE9NV2luZG93KiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2luZG93IGZy
b20gdGhlIEpTRE9NV2luZG93U2hlbGwuCiAgICAgICAgIHZvaWQgd2lsbFJlbW92ZUZyb21XaW5k
b3dTaGVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAppbmRleCAyNWQzODRhYjBkNTQ2MDJkNjQ5M2I4YmFlZTIwOTIzZmMyNDc5Y2NlLi5k
OTZmODQwZGI2NDBhMjlkZjcxYjMxOTE3OTg1OTRkYjQzYWM1ZGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTcsOCArNTcsOSBA
QCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUGFzc1JlZlB0cjxET01XaQogICAgIHNldFdpbmRvdyh3aW5kb3cpOwogfQogCi1K
U0RPTVdpbmRvd1NoZWxsOjp+SlNET01XaW5kb3dTaGVsbCgpCit2b2lkIEpTRE9NV2luZG93U2hl
bGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxs
Kj4oY2VsbCktPkpTRE9NV2luZG93U2hlbGw6On5KU0RPTVdpbmRvd1NoZWxsKCk7CiB9CiAKIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgK
aW5kZXggNDNiOTZlMjQyNWY0MmYyZjA0OGE0OGNmMjAwYTgzMWY5Zjg3ZDlhYy4uZDg2NzY2ZDE3
YjJjZmZkN2M2YTFjYjIyZGI3NDcyMDNhOWUzNmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSlNDOjpKU0dsb2JhbFRoaXMgQmFzZTsKICAgICBw
dWJsaWM6CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBK
U0M6OlN0cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwotICAgICAgICB2aXJ0dWFsIH5KU0RP
TVdpbmRvd1NoZWxsKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAK
ICAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEpTRE9NV2luZG93Kj4obV91bndyYXBwZWRPYmplY3QuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQg
c2V0V2luZG93KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvdyogd2lu
ZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKaW5kZXgg
ZDU0ZmU3NGZhNjdjZmZmYzZlODg3NTQ0OGM0NGQ2ZTk1NTdhYTZhNC4uMDVkYTQwMjQwNWQzNjRi
YmNmOTQ4MjI4NzRhY2U2MDU0YWEzMjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zMiw5ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0RPTVdyYXBwZXI6OnZpcnR1YWxGdW5j
dGlvblRvUHJldmVudFdlYWtWdGFibGUoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNET01XcmFwcGVyKTsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTRE9NV3JhcHBlcjo6c19pbmZvID0geyAiSlNET01XcmFwcGVyIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdyYXBwZXIpIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmgKaW5kZXggMzY4NWM4OWU2ODQ4OGYzZTFkODljZWFhMzQ4YzliMWViNDk4ODRlNC4uYWNk
Nzk2YTNmYjQ0Yzk3MGM4MzY0ZGVhNzI4OWE4NjI2NTJlNWVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTQyLDE2ICs0MiwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgIH0KIAogcHJvdGVj
dGVkOgotICAgIC8vIEFuIGlubGluZSBmdW5jdGlvbiBjYW5ub3QgYmUgdGhlIGZpcnN0IG5vbi1h
YnN0cmFjdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCi0gICAgLy8gaW4gdGhlIGNsYXNzIGFz
IGl0IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJv
bC4KLSAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZSgp
OwotCiAgICAgZXhwbGljaXQgSlNET01XcmFwcGVyKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgCiAgICAgICAgIDogSlNOb25GaW5h
bE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDRhMzk2ZTQ1Y2Y3MWMzYzJlNzM3MjU2MmYzNzMxNjE5MDEwNTNkMGMuLjk1NmM5NjE1YTAx
ZTkzNjg2YmZlYTkxNTA1MWY2NWJjNjVhNGMwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEpTSW1hZ2VDb25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJV
Q1RPUihKU0ltYWdlQ29uc3RydWN0b3IpOwogCi1jb25zdCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbWFnZUNvbnN0
cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiSW1hZ2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNJbWFnZUNvbnN0cnVjdG9yKSB9OwogCiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1h
Z2VDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggNWFmN2UzN2IyN2Y5N2M0YzMzOGUwNDMyNGI2NjExN2ZhMTdhMzk5Mi4uNjFjMTVk
NmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xODgsOCArMTg4LDEwIEBAIEpTVmFsdWUg
SlNOb2RlOjphcHBlbmRDaGlsZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzTnVsbCgp
OwogfQogCi1TY29wZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqIG5vZGUpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNO
b2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogbm9kZSkgY29uc3QKIHsKKyAgICBpZiAoaW5oZXJpdHMoJkpTSFRNTEVsZW1lbnQ6OnNfaW5m
bykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNIVE1MRWxlbWVudCo+KHRoaXMpLT5w
dXNoRXZlbnRIYW5kbGVyU2NvcGUoZXhlYywgbm9kZSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcApp
bmRleCA0OWE4MjhjYzg4NTVhZDVkMzM5ZTRhMzdjMDg2NTUwOWYxNDkzMzc2Li43NzdlNWI4MWUz
NzE3YzFjMWYxN2JjZjViMDMyM2JjMzNkMDI3YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcs
IGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b2NvbHNWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCks
IHByb3RvY29sc1ZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KHByb3RvY29sc1ZhbHVl
KSkgewogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwogICAgICAgICAgICAg
SlNBcnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5KHByb3RvY29sc1ZhbHVlKTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbHNBcnJheS0+bGVuZ3RoKCk7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRCYXNlLmNwcAppbmRleCA5MmI3OWY0MzU3OGU1OTYyYTg3M2I3NjdjYzU3ZGEyMTM2ZjY4MDdh
Li5lNzljNmU0YmQ0MzIxZTVjMDc3ZjA4NzhlZmY0NTI4YWZkYTU5NWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcApAQCAtNjAs
OCArNjAsOSBAQCB2b2lkIEpTV29ya2VyQ29udGV4dEJhc2U6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQog
Ci1KU1dvcmtlckNvbnRleHRCYXNlOjp+SlNXb3JrZXJDb250ZXh0QmFzZSgpCit2b2lkIEpTV29y
a2VyQ29udGV4dEJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU1dv
cmtlckNvbnRleHRCYXNlKj4oY2VsbCktPkpTV29ya2VyQ29udGV4dEJhc2U6On5KU1dvcmtlckNv
bnRleHRCYXNlKCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2VyQ29udGV4
dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCmluZGV4IGQ4MTcxYzE1N2VlZGJl
OTllZjcyOTcwNTI2ZThjNzQyNWRjNWVmZDUuLmFiY2JlYjY1ODMyNDQ5MDUxYTM5ODVlYWFjNmMx
Y2Y0YTQyODU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckNvbnRleHRCYXNlLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7
CiAgICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgfkpTV29ya2VyQ29udGV4dEJhc2UoKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgV29ya2VyQ29udGV4dCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcAppbmRleCBjYjg2YjI5YjU4YjA0ZTA5ZjE2NGI0ZmFhNDZhMjA1NjMwMGZi
MTlmLi5iZmE5M2FhODcwN2IwOWE5ZTNiNGI2MzEzN2EyYmQzZThlNjMyZjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIEoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6
Y3JlYXRlKFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KICAgICBp
ZiAodmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBpZiAoaXNKU0FycmF5KCZzY3JpcHRTdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkp
IHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFz
QXJyYXkodmFsdWUpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggYjY3NWNhMzEzMmRjMTQ5MDRjODBiZWJiYTEyMDlkYmQ1NzM4NDYx
My4uYTU2YThkYzlmYThmOWM0OTFhMGM1NzkzODU3YWZjYWU3OGM5MDZmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC0zMTAsNyArMzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodmFsdWUpOwotICAgICAgICByZXR1cm4gaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2Jh
bERhdGEoKSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pOwor
ICAgICAgICByZXR1cm4gaXNKU0FycmF5KG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNB
cnJheTo6c19pbmZvKTsKICAgICB9CiAKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNP
YmplY3QqIG9iamVjdCkKQEAgLTM1Nyw3ICszNTcsNyBAQCBwcml2YXRlOgogICAgIEpTVmFsdWUg
Z2V0U3BhcnNlSW5kZXgoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgYm9v
bCYgaGFzSW5kZXgpCiAgICAgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhcnJheSk7Ci0g
ICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkpIHsKKyAg
ICAgICAgaWYgKGlzSlNBcnJheShhcnJheSkpIHsKICAgICAgICAgICAgIGlmIChKU0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHsKICAgICAgICAgICAgICAgICBoYXNJbmRleCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNsb3QuZ2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2Vk
MmIxZmQ5ZDU4OTQ2Y2VhODAzYzM4NzliYjYyODJjYTMxMGQ3Li41ZDRiYjYwNTFhYWNlN2NkYWUz
NzdjNTRhYmJjYTQ2NmY0ODRiNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKIAogICAg
ICMgQ3VzdG9tIHB1c2hFdmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNoRXZlbnRIYW5k
bGVyU2NvcGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikgY29uc3Q7XG5c
biIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhh
bmRsZXJTY29wZSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpTY29wZUNo
YWluTm9kZSogcHVzaEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTY29w
ZUNoYWluTm9kZSopIGNvbnN0O1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNhbGwg
ZnVuY3Rpb25zCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwpAQCAtODYxLDcg
Kzg2MSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4g
dG8gcmV0dXJuIGZhbHNlIGZvciBvYmplY3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCcuCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCJ9ID0gMTsKICAgICB9CiAKQEAgLTEzNjksNyArMTM2OCwxMCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG51c2luZyBuYW1l
c3BhY2UgSlNDO1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm5hbWVzcGFjZSBXZWJD
b3JlIHtcblxuIik7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIkFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoJGNsYXNzTmFtZSk7XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTCgkY2xhc3NOYW1lKTtcbiIpOworICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUigkY2xhc3NOYW1lKTtcblxuIik7CisgICAgfQogCiAg
ICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUoJG9iamVj
dCwgJGRhdGFOb2RlKTsKIApAQCAtMTUwMSw5ICsxNTAzLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwi
JHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0Ojpz
X2luZm8sIDAsIGdldCR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0g
eyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgMCwgZ2V0
JHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtjbGFzc05h
bWV9UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9
IHsgXCIke3Zpc2libGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZKU0M6OkpTTm9uRmluYWxPYmpl
Y3Q6OnNfaW5mbywgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZv
ID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgJiR7
Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xhc3NO
YW1lfVByb3RvdHlwZSkgfTtcblxuIik7CiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBu
ZSAiRE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3Jr
ZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbiIpOwpAQCAtMTUxMSw2ICsxNTEzLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KKwogICAgIGlmICgkbnVtQ29u
c3RhbnRzID4gMCB8fCAkbnVtRnVuY3Rpb25zID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEZWxlZ2F0aW5nUHJvdG90eXBlR2V0T3duUHJvcGVydHlTbG90In0pIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMTU3MSw3ICsxNTc0LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
ICAgIH0KIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICRjbGFzc05h
bWUiIC4gIjo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1cIiwgJiIgLiAkcGFyZW50
Q2xhc3NOYW1lIC4gIjo6c19pbmZvLCAiKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0
IENsYXNzSW5mbyAkY2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05h
bWV9XCIsICZCYXNlOjpzX2luZm8sICIpOwogCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9TdGF0aWNUYWJsZXMifSkgewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiYke2NsYXNzTmFtZX1UYWJsZSIpOwpAQCAtMTYy
MSw3ICsxNjI0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsKICAgICAgICAgaWYgKElzVHlwZWRB
cnJheVR5cGUoJGltcGxUeXBlKSBhbmQgKCRpbXBsVHlwZSBuZSAiQXJyYXlCdWZmZXJWaWV3Iikg
YW5kICgkaW1wbFR5cGUgbmUgIkFycmF5QnVmZmVyIikpIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yIGRlc2NyaXB0b3IodnB0cigpLCBP
QkpFQ1RfT0ZGU0VUT0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBPQkpFQ1RfT0ZGU0VUT0Yo
JHtjbGFzc05hbWV9LCBtX3N0b3JhZ2VMZW5ndGgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcigmJHtjbGFz
c05hbWV9OjpzX2luZm8sIE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZSks
IE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZUxlbmd0aCkpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBnbG9iYWxEYXRhLnJlZ2lzdGVyVHlw
ZWRBcnJheURlc2NyaXB0b3IoaW1wbCgpLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fc3RvcmFnZUxlbmd0aCA9IGlt
cGwoKS0+bGVuZ3RoKCk7XG4iKTsKQEAgLTMzODgsMTMgKzMzOTEsMTUgQEAgc3ViIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgbXkgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVy
cyA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVy
cyJ9OwogCiAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewotICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9Q29uc3RydWN0b3JcIiwgJkRPTUNv
bnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0
cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
Y29uc3QgQ2xhc3NJbmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2
aXNpYmxlQ2xhc3NOYW1lfUNvbnN0cnVjdG9yXCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OiR7Y29uc3RydWN0
b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IERPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7
dmlzaWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNf
aW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0pO1xuXG4iKTsKKworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFz
c0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFz
c05hbWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNfaW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05h
bWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9
O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX06OiR7Y29uc3RydWN0b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5jcHAKaW5kZXggNGIwM2FiOTQ0NTZiNWFiZWZjOGRiYzNjN2UxOWY2ODM2NjRkZjY4Zi4uYWQ2
ZDk5ZWEwNGZkMjBlNGQ4ZjQwYjkyODk3MzRlYWQyZmE5ZWZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
Y3BwCkBAIC0zNiw2ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGbG9hdDY0QXJyYXkpOworQVNT
RVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNGbG9hdDY0QXJyYXkpOwogCiAvKiBIYXNoIHRh
YmxlICovCiAKQEAgLTU0LDcgKzU1LDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXlDb25zdHJ1
Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNGbG9hdDY0QXJyYXlDb25z
dHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmxvYXQ2NEFycmF5Q29uc3Ry
dWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZsb2F0NjRBcnJheUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yKSB9OwogCiBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpCkBAIC05OCw3ICsxMDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiBnZXRKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT5nbG9iYWxEYXRhKCksICZK
U0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTRmxv
YXQ2NEFycmF5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXlQcm90b3R5cGUiLCAm
SlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5UHJvdG90
eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGbG9hdDY0QXJyYXlQcm90b3R5cGUpIH07
Citjb25zdCBDbGFzc0luZm8gSlNGbG9hdDY0QXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZs
b2F0NjRBcnJheVByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5
UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGbG9hdDY0QXJyYXlQcm90b3R5
cGUpIH07CiAKIEpTT2JqZWN0KiBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZTo6c2VsZihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC0xMjIsNyArMTI1
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0SlNGbG9hdDY0QXJyYXlUYWJsZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+
Z2xvYmFsRGF0YSgpLCAmSlNGbG9hdDY0QXJyYXlUYWJsZSk7CiB9CiAKLWNvbnN0IENsYXNzSW5m
byBKU0Zsb2F0NjRBcnJheTo6c19pbmZvID0geyAiRmxvYXQ2NEFycmF5IiwgJkpTQXJyYXlCdWZm
ZXJWaWV3OjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5VGFibGUgLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRmxvYXQ2NEFycmF5KSB9OworY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5
OjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXRKU0Zsb2F0
NjRBcnJheVRhYmxlICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zsb2F0NjRBcnJheSkgfTsKIAog
SlNGbG9hdDY0QXJyYXk6OkpTRmxvYXQ2NEFycmF5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gaW1w
bCkKICAgICA6IEpTQXJyYXlCdWZmZXJWaWV3KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBs
KQpAQCAtMTMyLDcgKzEzNSw3IEBAIEpTRmxvYXQ2NEFycmF5OjpKU0Zsb2F0NjRBcnJheShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIEpTRmxv
YXQ2NEFycmF5OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgVHlwZWRBcnJheURlc2Ny
aXB0b3IgZGVzY3JpcHRvcih2cHRyKCksIE9CSkVDVF9PRkZTRVRPRihKU0Zsb2F0NjRBcnJheSwg
bV9zdG9yYWdlKSwgT0JKRUNUX09GRlNFVE9GKEpTRmxvYXQ2NEFycmF5LCBtX3N0b3JhZ2VMZW5n
dGgpKTsKKyAgICBUeXBlZEFycmF5RGVzY3JpcHRvciBkZXNjcmlwdG9yKCZKU0Zsb2F0NjRBcnJh
eTo6c19pbmZvLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGbG9hdDY0QXJyYXksIG1fc3RvcmFnZSksIE9C
SkVDVF9PRkZTRVRPRihKU0Zsb2F0NjRBcnJheSwgbV9zdG9yYWdlTGVuZ3RoKSk7CiAgICAgZ2xv
YmFsRGF0YS5yZWdpc3RlclR5cGVkQXJyYXlEZXNjcmlwdG9yKGltcGwoKSwgZGVzY3JpcHRvcik7
CiAgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7CiAgICAgbV9zdG9yYWdlTGVuZ3RoID0g
aW1wbCgpLT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRl
eCA0NDAwZTVlMTIyZGIzNjRkNjJlYzhjM2IyODM4ZWQ4MmM4NDIzODliLi5mODBiNjQ5NzMxZGEz
M2Y1MzZmZjljZTcxMDFjYjFmZmE1NGIyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKTsKIAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIApAQCAtNTMsNyAr
NTQsOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwotY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZv
LCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCkBA
IC0xMjcsMTQgKzEzMCwxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDEsIDAs
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6c19p
bmZvLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUpIH07Citjb25zdCBDbGFz
c0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZKU0RP
TVdyYXBwZXI6OnNfaW5mbywgJkpTVGVzdEV2ZW50Q29uc3RydWN0b3JUYWJsZSwgMCAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yVGFibGUsIDAgLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEV2ZW50Q29u
c3RydWN0b3I+IGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDBhYWE1NmE3NDZiOTk5MDZlZmU4MTM0ZTZm
ZDc4MjVhNDQzMTBmYTAuLmJhMjJiOWYyNTQ2ODUxM2JjM2JkYTc4ZGFmY2FhYzJhZjA5Yjc0ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC00Miw2ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
SlNUZXN0SW50ZXJmYWNlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdElu
dGVyZmFjZSk7CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtNjksNyArNzAsOSBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
c1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgMCB9OwotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6
OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUihKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Ip
IH07CiAKIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpA
QCAtMTMwLDE0ICsxMzMsMTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdElu
dGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VQcm90b3R5cGUiLCAmSlND
OjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJs
ZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUpIH07Citj
b25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
SW50ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdl
dERPTVByb3RvdHlwZTxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAK
LWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZh
Y2UiLCAmSlNET01XcmFwcGVyOjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgMCAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50
ZXJmYWNlKSB9OwogCiBKU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxU
ZXN0SW50ZXJmYWNlPiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmlu
ZGV4IGExZjZiOGM2MmIyNjdhZjY0NTcxNGU3NTlkMmRjYWFiMTNhMTBhNzIuLjczN2JmNTQ2NDky
NDRmODIxZmJiNGE0ZTY5ZmIwZWZiZjFmM2ZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVD
VE9SKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOwogCiAvKiBIYXNoIHRhYmxlICovCiAK
QEAgLTUxLDcgKzUyLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10KIH07CiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFi
bGUgPSB7IDEsIDAsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0
cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUihKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOwor
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxl
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvcikgfTsKIAogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rv
ck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTg0LDcgKzg3LDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlID0geyAyLCAxLCBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5m
byBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6
OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
KSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CkBAIC0xMDMsNyArMTA2LDcgQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG8KICAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmSlNET01X
cmFwcGVyOjpzX2luZm8sICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGFibGUsIDAgLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpIH07Citjb25z
dCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0geyAiVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKSB9OwogCiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyPiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGY0ZDVkZDI5OThmZTc3YTAx
NTZhOWJiOTJlODg3YWRjMWNjM2VjZmUuLjIzNGE2MTRkYjU4NDhjYjM5YjYzMmU1MDEwYjMyNjU2
ZWQzZGQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOwogCiAvKiBIYXNo
IHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCkBAIC01MCw3ICs1MSw5IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZVZh
bHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1
Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTc0LDcgKzc3LDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAm
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIHN0YXRpY19jYXN0PEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFt
ZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3RvciIsICZET01Db25zdHJ1
Y3Rvck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVj
dG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9y
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
CkBAIC0xMjUsMTQgKzEyOCwxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDEs
IDAsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6
c19pbmZvLCAmSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07Citjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZK
U0RPTVdyYXBwZXI6OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3RydWN0b3JUYWJsZSwgMCAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcikgfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1
Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yVGFibGUsIDAgLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE5hbWVk
Q29uc3RydWN0b3I+IGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDVjN2IwZDFkOGZmY2QyZjI0Yzg4YjZkNDMxM2RkNWRiMmEz
MTgwYTEuLjM3OTZmYjc5OGMxZmQ1MWY5NjAzYmJjYjM1NzU3YTg5N2Q1MGJiNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC02MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0T2JqKTsKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdE9iaik7CiAKIC8qIEhhc2ggdGFibGUgKi8KIApA
QCAtMTY3LDcgKzE2OCw5IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9iajo6Q09OU1Rf
VkFMVUVfMTMsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nCiBDT01QSUxFX0FTU0VS
VCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RPYmpFbnVtQ09OU1RfVkFM
VUVfMTRJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMTUgPT0gVGVz
dE9iajo6Q09OU1RfSU1QTCwgVGVzdE9iakVudW1DT05TVF9JTVBMSXNXcm9uZ1VzZURvbnRDaGVj
a0VudW1zKTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0T2JqQ29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywg
JkpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
T2JqQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdE9iakNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE9i
akNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3Ry
dWN0b3IpIH07CiAKIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpAQCAtMjY5
LDcgKzI3Miw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2Jq
UHJvdG90eXBlVGFibGUgPSB7IDEzNywgMTI3LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVl
cywgMCB9OwotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9ialByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE9ialByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJkpTVGVz
dE9ialByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9ialByb3Rv
dHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RPYmpQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFi
bGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiBKU09i
amVjdCogSlNUZXN0T2JqUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAgLTI4OCw3ICsyOTEsNyBAQCBib29sIEpTVGVzdE9i
alByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZQogICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8SlNUZXN0
T2JqUHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqIiwgJkpTRE9NV3JhcHBlcjo6c19pbmZv
LCAmSlNUZXN0T2JqVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iaikgfTsK
K2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmo6OnNfaW5mbyA9IHsgIlRlc3RPYmoiLCAmQmFzZTo6
c19pbmZvLCAmSlNUZXN0T2JqVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9i
aikgfTsKIAogSlNUZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKICAg
ICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggM2Jh
YmQzYzFjMTkxNGNlNjU2MDBiMzY4ZDEzZmYyMjJlODIwMDYyYy4uYmMwY2Y1Y2Y1ZDFlMTE3MWQ4
ZTY3YTFhOWE3ZjExMzhjZTc0OWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KTsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC01Miw3ICs1Myw5IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3RvclRhYmxlCiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9Owor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
OiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTg0LDE0
ICs4NywxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYQogfTsKIAogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJs
ZSA9IHsgMSwgMCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
VGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8s
ICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSkgfTsKIAogSlNPYmpl
Y3QqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6c2VsZihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAmSlNET01XcmFwcGVyOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBsKQogICAgIDog
SlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCmluZGV4IDQwMjM4M2U4ODM4OTczMmRiMmNlNjhkNjJk
NDYwM2MxNGJmOGJjOGUuLjZkYzE3ZmYyMmE1NTI2ZDgyNGYzNjlhZDU0Nzk4MTVmM2IxNjI3OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTQ4LDEw
ICs0OCw2IEBAIHZvaWQgQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAot
Q1J1bnRpbWVPYmplY3Q6On5DUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIENJbnN0YW5jZSogQ1J1
bnRpbWVPYmplY3Q6OmdldEludGVybmFsQ0luc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0luc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCmluZGV4IGJlZWRkYmIyODMyY2M0YTFhZWZm
Y2EyMDgzMDYzNjc4ODNkNDgyNTcuLjZiYzExZmUwYjAyZDI1NGI2YjBlOWJkMDExY2VhYmE3NjE5
NzFkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaApAQCAtNTAs
OCArNTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+Q1J1bnRpbWVPYmplY3QoKTsKLQogICAgIENJbnN0YW5jZSogZ2V0SW50ZXJuYWxD
SW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3Qu
Y3BwCmluZGV4IDlkNTE3ZTM5ODA5ODkwNzRhNThhZDQwMGQ3MjQ0OWUyOGMyYjEzMDIuLjg0YTNl
ZjMxOWFiN2ZhZjVmODVlZDlkYTYwMGMwMDFkOWEwYTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAKQEAgLTQ2LDEwICs0
Niw2IEBAIHZvaWQgSmF2YVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAot
SmF2YVJ1bnRpbWVPYmplY3Q6On5KYXZhUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIEphdmFJbnN0
YW5jZSogSmF2YVJ1bnRpbWVPYmplY3Q6OmdldEludGVybmFsSmF2YUluc3RhbmNlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SmF2YUluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0
YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFS
dW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGlt
ZU9iamVjdC5oCmluZGV4IGViZWRkNzY2ZjNjZDlkZjUxYjg1N2U5N2ZiZDEzMmU0OTgzZTBmNGMu
Ljg0OWEwMDc3ZWI2ZmMyZWExNTljM2JiMDFhMDhmNjFhMGZlY2JjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaApAQCAtNDgsOCAr
NDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+SmF2YVJ1bnRpbWVPYmplY3QoKTsKLQogICAgIEphdmFJbnN0YW5jZSogZ2V0SW50ZXJu
YWxKYXZhSW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgK
aW5kZXggMmRhYmZjNDBjMTdkNTc2ZTM5MDk5ZGYyNDkzOGE3ZTlhZTRmYjAyYy4uMGQ4ODUxZTFk
NWQ4YzI2YmY3NTkwMDQwNjJjNjNhYzQ0M2Y4NTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5PYmpDUnVudGlt
ZU9iamVjdCgpOwotCiAgICAgT2JqY0luc3RhbmNlKiBnZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgp
IGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCmluZGV4IGI5MjRmYWQz
M2M4Y2NkMTBlODQ1MjJiNjE2NjhiYTAzZGFlZjU0ZTYuLjdiYjE3NmM2YmZmNWY1NDM3MDI2OTUy
ZWYzYzk5YTdjYWJmNWUwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L09iakNSdW50aW1lT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09i
akNSdW50aW1lT2JqZWN0Lm1tCkBAIC00NiwxMCArNDYsNiBAQCB2b2lkIE9iakNSdW50aW1lT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLU9iakNSdW50aW1lT2JqZWN0Ojp+T2JqQ1J1
bnRpbWVPYmplY3QoKQotewotfQotCiBPYmpjSW5zdGFuY2UqIE9iakNSdW50aW1lT2JqZWN0Ojpn
ZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE9iamNJbnN0YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IGU3MjBlZjYwNjc2NGJkOGJiZGNmMmMxYWYz
ZGE1NjQ1MTcyYWRmZDYuLjYwMjU1OTQ1MGE1MGI0ZmMzNDdjODhlODY3MjlkM2ZmNDQ1MDg4YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMjIsNiAr
MTIyLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIE9iamNGYWxsYmFja09iamVjdElt
cChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCi0gICAgdmlydHVh
bCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNh
dXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQg
dG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKICAgICBSZWZQdHI8T2JqY0luc3Rh
bmNlPiBfaW5zdGFuY2U7CiAgICAgSWRlbnRpZmllciBfaXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA1NTliOTAyMzdmZDAwNWQ3MWU0MDJmZDQ3
MTI1NDA3ZmQxOGY2NDNjLi43MmZlZGM3NDVhZmM0MTM0OTcxMzIwNmUzMmM0Y2QxNjAxMWQ4MzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0xOTks
NiArMTk5LDExIEBAIE9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1w
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjCiB7CiB9CiAKK3ZvaWQgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8T2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2VsbCktPk9iamNGYWxsYmFja09iamVjdEltcDo6fk9iamNG
YWxsYmFja09iamVjdEltcCgpOworfQorCiB2b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKaW5kZXggYTliN2ZhNzM3ZWVlY2ExODhmMjc5OTFhNGJm
ZjQyNmJjZTE4OWQyMy4uNmIyNzVlMjQxZjM5Mzk4ZjFlOGQwZDQ2MDY0ZmJjZWU3ZWU2ZDNjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtOTgwLDYgKzk4MCwx
MSBAQCBRdFJ1bnRpbWVNZXRob2Q6On5RdFJ1bnRpbWVNZXRob2QoKQogICAgIGRlbGV0ZSBkX3B0
cjsKIH0KIAordm9pZCBRdFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIGpzQ2FzdDxRdFJ1bnRpbWVNZXRob2QqPihjZWxsKS0+UXRSdW50aW1lTWV0aG9kOjp+UXRS
dW50aW1lTWV0aG9kKCk7Cit9CisKIC8vID09PT09PT09PT09PT09PQogCiBRdFJ1bnRpbWVNZXRo
b2REYXRhOjp+UXRSdW50aW1lTWV0aG9kRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuaAppbmRleCA2MjljNzk2OTg4ZjVjNWVlODFjYzM5YjA4Y2QwNjQ1OTcwZWU5ZjY4Li40
MDY5OTdmMzRhNjMxZDY2NmY0MDVlYjg1MjlmMzYzMGZiY2QxM2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsOCBAQCBjbGFzcyBRdFJ1bnRpbWVN
ZXRob2QgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJ
bnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICB2aXJ0dWFsIH5RdFJ1bnRpbWVNZXRob2QoKTsK
KyAgICB+UXRSdW50aW1lTWV0aG9kKCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggZGUzYWMwYjgxNTA5NTAyNzMyMWViNzE1Y2Yz
YzJjYzNmYWExYjhhYi4uN2RlZDY3MzA3ODBkZmZlNjk4MmYwZGZkZjMzYTg4ZmZlZDU0OThiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNTQsNiArNTQsMTEg
QEAgUnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCkKICAgICBkZWxldGUgZ2V0Q29uY3JldGVB
cnJheSgpOwogfQogCit2b2lkIFJ1bnRpbWVBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7
CisgICAganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpLT5SdW50aW1lQXJyYXk6On5SdW50aW1l
QXJyYXkoKTsKK30KKwogSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBSdW50aW1l
QXJyYXkqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihhc09iamVjdChzbG90
QmFzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggNzg2MGQzMTcy
YWE0OGEzOWQzZTk0NDEwZTZjOTM0NDQzMTk4MDNlNy4uNTUzMGNiMzQ3MzdmNzAzYzk0YzZjNWM3
ZWIyMDRkMWQxM2Q3NzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBA
IC00Nyw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0eXBlZGVmIEJpbmRpbmdzOjpB
cnJheSBCaW5kaW5nc0FycmF5OwotICAgIHZpcnR1YWwgflJ1bnRpbWVBcnJheSgpOworICAgIH5S
dW50aW1lQXJyYXkoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
bWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKaW5k
ZXggOWFhM2U0ZmJjOTgzOWFkZjY3Yzg4YWRiMzYyMWE2MWM5NTc0NWQ2YS4uNmI4NjIzMTVmOTBh
Zjk2NzQwMWM3Y2UxMDUzNWQzOWNjNmQ4NzQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwCkBAIC01MCw4ICs1MCw5IEBAIFJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVN
ZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
CiB7CiB9CiAKLXZvaWQgUnVudGltZU1ldGhvZDo6dnRhYmxlQW5jaG9yKCkKK3ZvaWQgUnVudGlt
ZU1ldGhvZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PFJ1bnRpbWVNZXRo
b2QqPihjZWxsKS0+UnVudGltZU1ldGhvZDo6flJ1bnRpbWVNZXRob2QoKTsKIH0KIAogdm9pZCBS
dW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
aAppbmRleCA0MGVkYTEzNDFkYWVlZTEyNjBlNTAyYTgxZDczODNjNjZhYjYzMjZhLi5mNzk1NWEx
MjIzMTlmYjYzNWUyYjY4ZDUxM2RjNWE1MjhhZjI1OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBSdW50aW1lTWV0aG9kIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOwogCi0gICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOworICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgUnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRo
b2RMaXN0JiBtZXRob2RMaXN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCmluZGV4IDRhYmJjOGVhZTFmMjNmZTZiZjE3ZDNhOTA0MzkwMDMyNjhiMTI5YzMu
LjdlYzA4N2QzNTY0ZDU5Nzg5NjlhMzBjZWMxNzYxNDA3NDU2MzRiNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtNDksOSArNDksMTEgQEAgdm9pZCBSdW50
aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLVJ1bnRpbWVPYmplY3Q6On5SdW50
aW1lT2JqZWN0KCkKK3ZvaWQgUnVudGltZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgQVNTRVJUKCFtX2luc3RhbmNlKTsKKyAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlQoIXRoaXNPYmplY3Qt
Pm1faW5zdGFuY2UpOworICAgIHRoaXNPYmplY3QtPlJ1bnRpbWVPYmplY3Q6On5SdW50aW1lT2Jq
ZWN0KCk7CiB9CiAKIHZvaWQgUnVudGltZU9iamVjdDo6aW52YWxpZGF0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4IDA1MDQzMzZlYjhhZjUzNWQyZWJkYzE2NDll
ZGQwYTNiNTY1NzM4OTIuLjY0MzcxNTE4YmI3NGU3YjMyMDY2M2YxNzQ5MTdkNGYzYjU4YmE0YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5S
dW50aW1lT2JqZWN0KCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5o
CmluZGV4IGMxNjQ2ODA0YjJlYjhmMDUyMDhkNTFmNzU1OWJlOTU5MWNjMTg0ZTIuLjgzNGY5Yjhh
ZDMwYzkxYWEyN2NjYmNmYmExMDljNGZkNTE3NmM1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCkBAIC00OSw4ICs0
OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5Qcm94eVJ1bnRpbWVPYmplY3QoKTsKLQogICAgIFByb3h5SW5zdGFuY2UqIGdldEludGVy
bmFsUHJveHlJbnN0YW5jZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5t
bQppbmRleCBmNTMxOTI0OWNiOGNmZWZiZTA1MmMzMTU1ZDFjOWIwNmRkYjQ3MzU5Li5jMjdlNzI4
Y2RlZjdjNGE4YTRkOGM5YjVjOTQ0ZWJjZmVlZDU3MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCkBAIC00Nywx
MCArNDcsNiBAQCB2b2lkIFByb3h5UnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
fQogCi1Qcm94eVJ1bnRpbWVPYmplY3Q6On5Qcm94eVJ1bnRpbWVPYmplY3QoKQotewotfQotCiBQ
cm94eUluc3RhbmNlKiBQcm94eVJ1bnRpbWVPYmplY3Q6OmdldEludGVybmFsUHJveHlJbnN0YW5j
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5SW5zdGFuY2UqPihnZXRJ
bnRlcm5hbEluc3RhbmNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCmluZGV4IGQzZDEwMGE4NDk1ZGQw
YzkzMmUzY2I4MmZlZmUzN2Q1ZTcwNGI1YWUuLjg5ODE0NzEzNTdiMmFlNWI2YmVjZDBkNjYxY2I0
MDg4NDllOTY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKQEAgLTM5LDYgKzM5LDggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBU1NFUlRfSEFTX1RS
SVZJQUxfREVTVFJVQ1RPUihKU05QTWV0aG9kKTsKKwogY29uc3QgQ2xhc3NJbmZvIEpTTlBNZXRo
b2Q6OnNfaW5mbyA9IHsgIk5QTWV0aG9kIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05QTWV0aG9kKSB9OwogCiBKU05QTWV0aG9kOjpKU05Q
TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGEyZmQy
MjZkZWRkZTJlZDk4ODU5ZGUyYjA4ZTE1OGY5MGYyY2RlYjYuLmFhNTZhMzc1Mjc2NzVlOTQ1ZmZi
MGJjYzU1NWY1MGNkNTI1Y2JjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTc0LDYgKzc0LDEx
IEBAIEpTTlBPYmplY3Q6On5KU05QT2JqZWN0KCkKICAgICBBU1NFUlQoIW1fbnBPYmplY3QpOwog
fQogCit2b2lkIEpTTlBPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2Fz
dDxKU05QT2JqZWN0Kj4oY2VsbCktPkpTTlBPYmplY3Q6On5KU05QT2JqZWN0KCk7Cit9CisKIHZv
aWQgSlNOUE9iamVjdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fbnBPYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgKaW5kZXggNGI5YWQ3Y2FkMTkzNDllMjhmN2VkNzEyOTczYWQ1Nzg4MzNmNDU1
Zi4uN2YyNmYwZDY3MzZiYjZkYjJmMzIzZGYyYjA3ZjlmMDIyZDUzMWI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB+SlNOUE9iamVjdCgp
OworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICB2b2lkIGludmFsaWRh
dGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGI0NmYxNTliYThkYWM0YzY5ZmViMDYx
YjIzODk2ODE4N2NmZjZjODAuLjU5ZTEyMTdjMjhiOTcyYzdjMDQxMjM0YzhhMWI1MTUxOWNmZmRh
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE2OCw2ICsxNjgsOCBAQCBFWFBPUlRTCiAg
ICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAg
ICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoK
ICAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAg
ICAgP3NfaW5mb0BKU0RPTVdyYXBwZXJAV2ViQ29yZUBAMlVDbGFzc0luZm9ASlNDQEBCCisgICAg
ICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFC
RVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRv
UmVjdEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoK
ICAgICAgICAgP3NldFNob3VsZExheW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVARnJh
bWVWaWV3QFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29y
ZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCkBAIC0xODksNCArMTkxLDMgQEAgRVhQT1JUUwog
ICAgICAgICA/dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgog
ICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdl
YkNvcmVAQFFBRVhYWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFt
ZVZpZXdAMkBYWgotICAgICAgICA/dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUBK
U0RPTVdyYXBwZXJAV2ViQ29yZUBATUFFWFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYKaW5kZXggZTU3ZGNkYjg2ZjZkYTk4MGQ1MGM0ZTFiMGQ2Yzg2NTlhNDQyYzUzYy4uZjBiZjE4
YjExYWNlMjdmZjQxMjhkODdiOGVhZjBjZDFkOWIzNzI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyQ0ZMaXRlLmRlZgpAQCAtMTgyLDQgKzE4MiwzIEBAIEVYUE9SVFMKICAgICAgICAgP3RvUmFu
Z2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoK
ICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKLSAg
ICAgICAgP3ZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVASlNET01XcmFwcGVyQFdl
YkNvcmVAQE1BRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
ciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNDBjYjc4YmI1M2ZlNDQ5
NjIwNmJhMGYzYTE0OTk5OGI1ZjlkZDc3OC4uYjA0ODc0MWIxYzI1MDYyMWJlMzVjYTQ0ZDA0ODk3
OTk4N2UxNjBkYyAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgor
KysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC00MSw3ICs0MSw2IEBAIF9a
TjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFdjsKIF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktO
U183SW50UmVjdEU7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQxN3RvR2VuZXJhdGVkU3RyZWFt
RXY7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKLV9aTjdXZWJDb3JlMTJK
U0RPTVdyYXBwZXIzNHZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKIF9aTjdX
ZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxl
bWVudEVpaWI7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUmpTNl87CiBfWk43V2ViQ29yZTEy
VGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRF
UEtOU181UmFuZ2VFUm1TNl87CkBAIC02OSw2ICs2OCw3IEBAIF9aTjdXZWJDb3JlOUpTRWxlbWVu
dDZzX2luZm9FOwogX1pON1dlYkNvcmU5dG9FbGVtZW50RU4zSlNDN0pTVmFsdWVFOwogX1pOSzdX
ZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CiBfWk5LN1dl
YkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxNHN1Z2dlc3RlZFZhbHVlRXY7CitfWk5LN1dlYkNvcmUx
N0pTRE9NR2xvYmFsT2JqZWN0MjJzY3JpcHRFeGVjdXRpb25Db250ZXh0RXYKIF9aTks3V2ViQ29y
ZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIxMWlzUHJlbG9hZGVkRVJLTjNXVEY2U3RyaW5nRTsKIF9a
Tks3V2ViQ29yZTI2SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQyMWxhc3RDaGFuZ2VXYXNVc2Vy
RWRpdEV2OwogX1pOSzdXZWJDb3JlNUZyYW1lOHNldHRpbmdzRXY7CmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRlZjNlYjE1OTFkMDNmYWVkMTkwMWJkZDE4NzFhZWQ3
NmZhYjRmZi4uN2VmYzdlMWIzMzQ4MTcwMGJkMjRlMTEwODVmMTI1OTcyYWI4NGQ2YiAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTEy
LTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
RGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IFJlbW92
ZWQgc3ltYm9sIG5vIGxvbmdlciBwcmVzZW50LgorCiAyMDExLTEyLTE0ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBSb2xsb3V0IHIxMDI3Njks
IGJlY2F1c2UgaXQgYnJva2UgUXQtNC44IGJ1aWxkcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119317</attachid>
            <date>2011-12-14 16:11:51 -0800</date>
            <delta_ts>2011-12-14 21:27:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74331-20111214161150.patch</filename>
            <type>text/plain</type>
            <size>310412</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWU2MjYxZWYzMDBiYjc0MDRjZjI0ZWQzNTI4Y2UwZTExZjY5MGE3Li44MDdhODM4NWY1ZmFhZTRh
MDk4ODRmMzVmZmI1YTg0NDI1YjBmNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjIgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZWdhcGF0Y2gg
d2hpY2ggZnJlZXMgdXMgZnJvbSB0aGUgY2hhaW5zIG9mIHZpcnR1YWwgZGVzdHJ1Y3RvcnMuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3JzLCB3aGlj
aCBhcmUgdGhlIGxhc3Qgb2YgdGhlIHZpcnR1YWwgCisgICAgICAgIGZ1bmN0aW9ucywgZnJvbSB0
aGUgSlNDZWxsIGhpZXJhcmNoeSwgd2UgbmVlZCB0byBhZGQgdGhlIENsYXNzSW5mbyBwb2ludGVy
IHRvIAorICAgICAgICB0aGUgY2VsbCByYXRoZXIgdGhhbiB0byB0aGUgc3RydWN0dXJlIGJlY2F1
c2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBsYXppbHkgY2FsbCAKKyAgICAgICAgdGhlIHN0YXRp
YyBkZXN0cm95KCkgZnVuY3Rpb25zIHRoYXQgd2lsbCByZXBsYWNlIHRoZSB2aXJ0dWFsIGRlc3Ry
dWN0b3JzLCB3ZSAKKyAgICAgICAgbmVlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgQ2xhc3NJ
bmZvIHdpdGhvdXQgdGhlIGRhbmdlciBvZiB0aGUgb2JqZWN0J3MgCisgICAgICAgIFN0cnVjdHVy
ZSBiZWluZyBjb2xsZWN0ZWQgYmVmb3JlIHRoZSBvYmplY3QgaXRzZWxmLgorCisgICAgICAgIEFm
dGVyIGFkZGluZyB0aGUgQ2xhc3NJbmZvIHRvIHRoZSBjZWxsLCB3ZSBjYW4gdGhlbiBiZWdpbiB0
byByZW1vdmUgb3VyIHVzZSAKKyAgICAgICAgb2YgdnB0cnMgZm9yIG9wdGltaXphdGlvbnMgd2l0
aGluIHRoZSBKSVQgYW5kIHRoZSBHQy4gIFdoZW4gd2UgaGF2ZSByZW1vdmVkIAorICAgICAgICBh
bGwgb2YgdGhlIHN0b3JlZCB2cHRycyBmcm9tIEpTR2xvYmFsRGF0YSwgd2UgY2FuIHRoZW4gYWxz
byByZW1vdmUgYWxsIG9mIAorICAgICAgICB0aGUgcmVsYXRlZCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisKKyAgICAgICAgVGhlIHJlcGxhY2VtZW50IGZvciB2aXJ0dWFsIGRlc3RydWN0b3JzIHdp
bGwgYmUgdG8gYWRkIGEgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gCisgICAgICAgIHBvaW50ZXIg
dG8gdGhlIE1ldGhvZFRhYmxlIHN0b3JlZCBpbiBDbGFzc0luZm8uICBBbnkgc3ViY2xhc3Mgb2Yg
SlNDZWxsIHRoYXQgaGFzIAorICAgICAgICBhIG5vbi10cml2aWFsIGRlc3RydWN0b3Igd2lsbCBy
ZXF1aXJlIGl0cyBvd24gc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gdG8gc3RhdGljIAorICAgICAg
ICBjYWxsIGl0cyBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3IsIHdoaWNoIHdpbGwgbm93IGJlIG5v
bi12aXJ0dWFsLiAgSW4gZnV0dXJlIAorICAgICAgICBwYXRjaGVzIHdlIHdpbGwgc2xvd2x5IG1v
dmUgYXdheSBmcm9tIGRlc3RydWN0b3JzIGFsdG9nZXRoZXIgYXMgd2UgbWFrZSBtb3JlIGFuZCAK
KyAgICAgICAgbW9yZSBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnkgcmF0aGVyIHRoYW4gbWFs
bG9jLWVkIG1lbW9yeS4gIFRoZSBHQyB3aWxsIG5vdyAKKyAgICAgICAgY2FsbCB0aGUgc3RhdGlj
IGRlc3Ryb3kgbWV0aG9kIHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAg
ICAgICAgQXMgd2UgZ28gdGhyb3VnaCB0aGUgaGllcmFyY2h5IGFuZCBhZGQgc3RhdGljIGRlc3Ry
b3kgZnVuY3Rpb25zIHRvIGNsYXNzZXMsIAorICAgICAgICB3ZSB3aWxsIGFsc28gYWRkIGEgbmV3
IGFzc2VydCwgQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IsIHRvIHRob3NlIGNsYXNzZXMg
CisgICAgICAgIHRvIHdoaWNoIGl0IGFwcGxpZXMuICBUaGUgZnV0dXJlIGdvYWwgaXMgdG8gZXZl
bnR1YWxseSBoYXZlIGV2ZXJ5IGNsYXNzIGhhdmUgdGhhdCBhc3NlcnQuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Nv
bnN0cnVjdG9yOjpkZXN0cm95KTogQWRkIGEgZGVzdHJveSBmdW5jdGlvbiB0byBzdGF0aWNhbGx5
IGNhbGwgCisgICAgICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IgYmVjYXVzZSBpdCBoYXMgc29t
ZSBleHRyYSBkZXN0cnVjdGlvbiBsb2dpYy4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6IEFkZCB0cml2
aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBKU0NhbGxiYWNrRnVuY3Rpb24uCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOiBBZGQgYSBkZXN0cm95IGZ1bmN0aW9uIHRvIHN0YXRp
Y2FsbHkgY2FsbCB+SlNDYWxsYmFja09iamVjdCAKKyAgICAgICAgYmVjYXVzZSBpdCBoYXMgYSBt
ZW1iZXIgT3duUHRyIHRoYXQgbmVlZHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChKU0M6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6IEFkZC9yZW1vdmUgbmVjZXNzYXJ5IHN5bWJvbHMgZm9yIEpTQy4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmOiBTYW1lIGZvciBXaW5kb3dzIHN5bWJvbHMuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcDogRGVidWdnZXJBY3RpdmF0aW9uLCBmb3Igc29tZSBzdHJhbmdl
IHJlYXNvbiwgZGlkbid0IAorICAgICAgICBoYXZlIGl0cyBvd24gQ2xhc3NJbmZvIGRlc3BpdGUg
dGhlIGZhY3QgdGhhdCBpdCBvdmVycmlkZXMgYSBudW1iZXIgb2YgTWV0aG9kVGFibGUgCisgICAg
ICAgIG1ldGhvZHMuICBBZGRlZCB0aGUgQ2xhc3NJbmZvLCBhbG9uZyB3aXRoIGFuIGFzc2VydGlv
biB0aGF0IGl0cyBkZXN0cnVjdG9yIGlzIHRyaXZpYWwuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOiBSZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJndW1lbnQgdG8gaXNKU0FycmF5LCBpc0pTQnl0ZUFycmF5
LCAKKyAgICAgICAgaXNKU1N0cmluZywgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3Bw
OiAgRGl0dG8uICBBbHNvIHJlbW92ZSB1c2VzIG9mIGpzQXJyYXlWUHRyIGluIGZhdm9yIG9mIHVz
aW5nIHRoZSAKKyAgICAgICAgSlNBcnJheSBDbGFzc0luZm8gcG9pbnRlci4KKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6ICBSZXBsYWNlIHVzZXMgb2YgdGhlIG9sZCB2cHRycyB3aXRoIG5ldyBDbGFzc0luZm8g
CisgICAgICAgIGNvbXBhcmlzb25zIHNpbmNlIHdlIGRvbid0IGhhdmUgdnB0cnMgYW55bW9yZS4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6IFJlbW92ZSBhbGwgdXNlcyBvZiB2cHRycyBpbiBHQyBvcHRpbWl6YXRpb25zIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCAKKyAgICAgICAgQ2xhc3NJbmZvIGNvbXBhcmlzb25zLgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFp
bik6CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IERpdHRvLgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOiBEaXR0by4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9y
Lmg6IERpdHRvLgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IpOgorICAg
ICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uY3BwOiBOb3cgdGhhdCB3ZSBkb24ndCBoYXZlIHZw
dHJzLCB3ZSBjYW4ndCBjb3VudCB0aGVtLiAgCisgICAgICAgIFdlJ2xsIGhhdmUgdG8gcmVuYW1l
IHRoaXMgY2xhc3MgYW5kIG1ha2UgaXQgdXNlIENsYXNzSW5mbyBwdHJzIGluIGEgZnV0dXJlIHBh
dGNoLgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6Y291bnQpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDogUmVtb3ZlIGFsbCBnbG9iYWwgZGF0YSBhcmd1bWVu
dHMgZnJvbSBpc0pTQXJyYXksIAorICAgICAgICBldGMuIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpT
Qzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6IFJlbW92ZSB2cHRyIGFyZ3VtZW50IGZyb20gZW1pdEFsbG9jYXRlQmFz
aWNKU09iamVjdCAKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOiBSZW1vdmUgdnB0
ciBwbGFudGluZywgYW5kIGFkZCBDbGFzc0luZm8gcGxhbnRpbmcsIAorICAgICAgICByZW1vdmUg
YWxsIHZ0YWJsZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgYnJhbmNoIGNvZGUgd2l0aCBjb3Jy
ZXNwb25kaW5nIENsYXNzSW5mby4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmlt
aXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9l
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6IFJlbW92ZSBnbG9iYWwgZGF0YSBhcmd1bWVudCBm
cm9tIGlzSlNTdHJpbmcsIGV0Yy4KKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICog
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgc3R1ZmYgd2l0
aCBDbGFzc0luZm8gc3R1ZmYuCisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6Omxv
YWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDogUmVtb3ZlIGdsb2JhbCBkYXRhIGFyZ3VtZW50IGZyb20gaXNKU0Fy
cmF5LgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQb3Ap
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1NoaWZ0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY0ZpbHRlcik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTWFwKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNFdmVyeSk6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jRm9yRWFjaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29tZSk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmVkdWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZWR1Y2VSaWdodCk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Jv
b2xlYW5PYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOiBBZGQgZGVzdHJv
eSBmdW5jdGlvbiBwb2ludGVyIHRvIE1ldGhvZFRhYmxlLgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAg
ICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOiBBZGQgZGVzdHJveSBmdW5jdGlvbiBmb3IgRGF0
ZUluc3RhbmNlIGJlY2F1c2UgaXQgaGFzIGEgUmVmUHRyIAorICAgICAgICB0aGF0IG5lZWRzIGRl
c3RydWN0aW9uLgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6
IERpdHRvIChiZWNhdXNlIG9mIFVTdHJpbmcgbWVtYmVyKS4KKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Lmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwg
ZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDogQWRkIGRlc3Ryb3kgZnVuY3Rpb25zIGZv
ciBFeGVjdXRhYmxlQmFzZSBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChK
U0M6OkV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1
dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ry
b3kpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0Lgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBEaXR0by4gQWxzbyByZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJnIGZyb20gaXNKU0FycmF5LgorICAgICAgICAoSlNDOjpm
dW5jdGlvblByb3RvRnVuY0FwcGx5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5j
cHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6IFJl
bW92ZSBjYWxsIHRvIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyBzaW5jZSBpdCBubyAKKyAgICAg
ICAgbG9uZ2VyIGV4aXN0cy4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZ09uY2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6IFJlbW92ZSB2dGFibGVB
bmNob3IgZnVuY3Rpb24sIGFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LCAKKyAgICAgICAg
cmVtb3ZlIGZpcnN0IGFyZyBmcm9tIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2suCisgICAgICAgICogcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBjYWxsIH5KU0FycmF5
LiAgUmVwbGFjZSB2cHRyIGNoZWNrcyBpbiAKKyAgICAgICAgZGVzdHJ1Y3RvciB3aXRoIENsYXNz
SW5mbyBjaGVja3MuCisgICAgICAgIChKU0M6OkpTQXJyYXk6On5KU0FycmF5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6IFJl
bW92ZSBWUHRyU3RlYWxpbmdIYWNrLiAgUmVtb3ZlIGdsb2JhbERhdGEgYXJndW1lbnQgZnJvbSBp
c0pTQXJyYXkgCisgICAgICAgIGFuZCBjaGFuZ2UgdGhlbSB0byBjaGVjayB0aGUgQ2xhc3NJbmZv
IHJhdGhlciB0aGFuIHRoZSB2cHRycy4KKyAgICAgICAgKEpTQzo6aXNKU0FycmF5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBh
c3NlcnQuIFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkuCisgICAgICAgIChKU0M6OmJv
dW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBm
dW5jdGlvbiwgcmVwbGFjZSB2cHRyIGNoZWNrcyB3aXRoIENsYXNzSW5mbyBjaGVja3MuCisgICAg
ICAgIChKU0M6OkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpKU0J5
dGVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBSZW1v
dmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLgorICAgICAgICAoSlNDOjppc0pTQnl0ZUFycmF5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNz
ZXJ0LiAgQWRkIHN0YXRpYyBkZXN0cm95IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6IFJlbW92ZSBWUHRyU3RlYWxp
bmdIYWNrIGNvZGUuICBBZGQgZnVuY3Rpb24gZm9yIHJldHVybmluZyB0aGUgb2Zmc2V0IAorICAg
ICAgICBvZiB0aGUgQ2xhc3NJbmZvIHBvaW50ZXIgaW4gdGhlIG9iamVjdCBmb3IgdXNlIGJ5IHRo
ZSBKSVQuICBBZGQgdGhlIENsYXNzSW5mbyBwb2ludGVyIHRvIAorICAgICAgICB0aGUgSlNDZWxs
IGl0c2VsZiwgYW5kIGdyYWIgaXQgZnJvbSB0aGUgU3RydWN0dXJlLiAgUmVtb3ZlIHRoZSB2cHRy
IGFuZCBzZXRWUHRyIGZ1bmN0aW9ucywgCisgICAgICAgIGFzIHRoZXkgYXJlIG5vIGxvbmdlciB1
c2VkLiAgQWRkIGEgdmFsaWRhdGVkQ2xhc3NJbmZvIGZ1bmN0aW9uIHRvIEpTQ2VsbCBmb3IgYW55
IGNsaWVudHMgCisgICAgICAgIHRoYXQgd2FudCB0byB2ZXJpZnksIHdoaWxlIGluIERlYnVnIG1v
ZGUsIHRoYXQgdGhlIENsYXNzSW5mbyBjb250YWluZWQgaW4gdGhlIGNlbGwgaXMgdGhlIAorICAg
ICAgICBzYW1lIG9uZSBhcyB0aGF0IGNvbnRhaW5lZCBpbiB0aGUgU3RydWN0dXJlLiAgVGhpcyBp
c24ndCB1c2VkIHRvbyBvZnRlbiwgYmVjYXVzZSBtb3N0IG9mIAorICAgICAgICB0aGUgcGxhY2Vz
IHdoZXJlIHdlIGNvbXBhcmUgdGhlIENsYXNzSW5mbyB0byB0aGluZ3MgY2FuIGJlIGNhbGxlZCBk
dXJpbmcgZGVzdHJ1Y3Rpb24uICAKKyAgICAgICAgU2luY2UgdGhlIFN0cnVjdHVyZSBpcyB1bnJl
bGlhYmxlIGR1cmluZyB0aGUgcGhhc2Ugd2hlbiBkZXN0cnVjdG9ycyBhcmUgYmVpbmcgY2FsbGVk
LCAKKyAgICAgICAgd2UgY2FuJ3QgY2FsbCB2YWxpZGF0ZWRDbGFzc0luZm8uCisgICAgICAgIChK
U0M6OkpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2sgY29kZS4gIEFkZCBz
dGF0aWMgZGVzdHJveSwgcmVtb3ZlIHZ0YWJsZUFuY2hvciwgCisgICAgICAgIHJlbW92ZSBmaXJz
dCBhcmcgZnJvbSBjYWxsIHRvIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6IAorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcDogUmVtb3ZlIGFsbCBWUHRyIHN0ZWFsaW5nIGNvZGUgYW5kIHN0b3JhZ2UsIGluY2x1
ZGluZyBzdG9yZVZQdHJzLCAKKyAgICAgICAgYXMgdGhlc2UgdnB0cnMgYXJlIG5vIGxvbmdlciBu
ZWVkZWQgaW4gdGhlIGNvZGViYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlEZXNjcmlwdG9yOjpUeXBlZEFycmF5RGVzY3JpcHRv
cik6IENoYW5nZWQgdGhlIFR5cGVkQXJyYXlEZXNjcmlwdG9yIHRvIHVzZSAKKyAgICAgICAgQ2xh
c3NJbmZvIHJhdGhlciB0aGFuIHRoZSB2cHRyLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwOiBBZGQgdHJpdmlhbCBkZXN0
cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOiBEaXR0by4gUmVtb3ZlIGZpcnN0
IGFyZyBmcm9tIGlzSlNBcnJheSBjYWxscy4KKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDogCisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIEpTT2JqZWN0LCBy
ZW1vdmUgdnRhYmxlQW5jaG9yIAorICAgICAgICBmcm9tIEpTTm9uRmluYWxPYmplY3QgYW5kIEpT
RmluYWxPYmplY3QsIGFkZCBzdGF0aWMgZGVzdHJveSBmb3IgSlNGaW5hbE9iamVjdCBhbmQgCisg
ICAgICAgIEpTTm9uRmluYWxPYmplY3QsIGFkZCBpc0pTRmluYWxPYmplY3QgdXRpbGl0eSBmdW5j
dGlvbiBzaW1pbGFyIHRvIGlzSlNBcnJheSwgcmVtb3ZlIGFsbCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTTm9uRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjppc0pTRmluYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6IEFkZCBz
dGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChK
U0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oOiBEaXR0by4gCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6IERpdHRvLiBSZW1vdmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLiBBbHNvIHJl
bW92ZSBmaXh1cFZQdHIgY29kZSwgCisgICAgICAgIHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRv
IGZpeHVwIHZwdHJzLgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6
anNOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmcpOgorICAgICAgICAo
SlNDOjpqc1N1YnN0cmluZzgpOgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAg
IChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZ0J1aWxkZXIpOgor
ICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuY3BwOiAKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1l
L01hdGhPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOiBSZW1vdmUgY2FsbHMgdG8gZml4dXBWUHRyLCByZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNT
dHJpbmcuCisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToK
KyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDog
QWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlc3Ryb3kpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBmb3IgUmVnRXhwQ29uc3RydWN0b3IgYW5kIFJl
Z0V4cE1hdGNoZXNBcnJheS4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDogQWRk
IHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlc3Ryb3kpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29w
ZUNoYWluLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDogRGl0dG8uIFJlbW92ZSB2dGFibGVB
bmNob3IuCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6IE1vdmUgSlNDZWxsOjpmaW5p
c2hDcmVhdGlvbiBhbmQgSlNDZWxsIGNvbnN0cnVjdG9yIGludG8gU3RydWN0dXJlLmggCisgICAg
ICAgIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdGhlIGZ1bGwgU3RydWN0dXJlIHR5cGUgdG8g
YWNjZXNzIHRoZSBDbGFzc0luZm8gdG8gc3RvcmUgaW4gdGhlIEpTQ2VsbC4KKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
ZENsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBBZGQgbmV3IGFzc2VydGlvbiBBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUiwgd2hpY2ggdXNlcyBjbGFuZ3MgCisgICAgICAgIGFiaWxpdHkgdG8gdGVs
bCB1cyB3aGVuIGEgY2xhc3MgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBXZSB3aWxsIHVzZSB0
aGlzIGFzc2VydCAKKyAgICAgICAgbW9yZSBpbiBmdXR1cmUgcGF0Y2hlcyBhcyB3ZSBtb3ZlIHRv
d2FyZCBoYXZpbmcgYWxsIEpTQyBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnksIAorICAgICAg
ICB3aGljaCBtZWFucyBtb3ZpbmcgYXdheSBmcm9tIHVzaW5nIGRlc3RydWN0b3JzL2ZpbmFsaXpl
cnMuCisKIDIwMTEtMTItMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYmFjayB0aGUgY2FsbE9uTWFpblRocmVhZCBvdmVybG9hZCB0aGF0IHRh
a2VzIGEgV1RGOjpGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggZDM2YWJlZGQ4
NGQyYmVhODEwMWE2ZDVhMzg5Y2U4OGY3ODhkMmZlMy4uMzM4MGU5ZDljODQ3NzViNzE2MzdiZjY2
ZmVhNzkzNzI5MTE5NGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IEFkZCBzdGF0
aWMgZGVzdHJveSBmdW5jdGlvbi4KKyAgICAgICAgKFVzZXJPYmplY3RJbXA6OmRlc3Ryb3kpOgor
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKKwogMjAxMS0xMi0wMiAgRGF2aWQgTGV2aW4gIDxs
ZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIFdURiBjbGFzcyBmcm9tIFRlbXBv
cmFyaWx5Q2hhbmdlIHRvIFRlbXBvcmFyeUNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YzcxNDMxZmRi
NTMwZWE1MWNiYzZlOTBhZTViMGFlZGRmYjhkMjBlLi4xZjI2ZTU0MTJiNjJmNDMxMDg0ZjlhNGZi
MDdlMzhkOWIwNDAyZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTEtMTItMTMg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZS12
aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBEb2luZyBldmVyeXRoaW5nIGhl
cmUgdGhhdCB3YXMgZG9uZSB0byB0aGUgSlNDZWxsIGhpZXJhcmNoeSBpbiBKYXZhU2NyaXB0Q29y
ZS4gCisgICAgICAgIFNlZSB0aGUgQ2hhbmdlTG9nIGZvciB0aGlzIGNvbW1pdCBmb3IgYSBtb3Jl
IGluLWRlcHRoIGRlc2NyaXB0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEFkZC9y
ZW1vdmUgc3ltYm9scy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREN1c3RvbS5jcHA6IFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkgY2FsbC4K
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRXZWJraXRM
aW5lRGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDogQWRkIHRy
aXZhbCBkZXN0cnVjdG9yIGFzc2VydCBmb3IgRE9NQ29uc3RydWN0b3JPYmplY3QgCisgICAgICAg
IGFuZCBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4gIEFkZCBpbXBsZW1lbnRh
dGlvbiBmb3IgCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdGhhdCBkaXNwYXRjaGVz
IHRvIGRpZmZlcmVudCBmdW5jdGlvbnMgaW4gc3ViY2xhc3NlcyAKKyAgICAgICAgZGVwZW5kaW5n
IG9uIG91ciBjdXJyZW50IENsYXNzSW5mby4gIFdlIGRvIHRoaXMgc28gdGhhdCB3ZSBjYW4gZ2V0
IHJpZCBvZiB0aGUgCisgICAgICAgIHZpcnR1YWwtbmVzcyBvZiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBiZWNhdXNlIGFueSB2aXJ0dWFsIGZ1bmN0aW9ucyB3aWxsIHRocm93IAorICAgICAgICBv
ZmYgdGhlIGxheW91dCBvZiB0aGUgb2JqZWN0IGFuZCB3ZSdsbCBjcmFzaCBhdCBydW50aW1lLgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpkZXN0cm95KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaDogRGUtdmlydHVhbGl6ZSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOiBBZGQgc3RhdGlj
IGRlc3Ryb3kuCisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpkZXN0cm95KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6IEFkZCBhIENsYXNzSW5mbyB0
byBKU0RPTVdyYXBwZXIgc2luY2UgaXQgbm93IG92ZXJyaWRlcyAKKyAgICAgICAgYSBNZXRob2RU
YWJsZSBmdW5jdGlvbi4gUmVtb3ZlIHZ0YWJsZUFuY2hvciB2aXJ0dWFsIGZ1bmN0aW9uLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRl
c3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6
IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBvZiBwdXNoRXZlbnRIYW5kbGVyU2NvcGUgc28gdGhhdCAK
KyAgICAgICAgaXQgZGlzcGF0Y2hlcyB0byB0aGUgY29ycmVjdCBmdW5jdGlvbiBkZXBlbmRpbmcg
b24gdGhlIAorICAgICAgICBpZGVudGl0eSBvZiB0aGUgY2xhc3MgYXMgc3BlY2lmaWVkIGJ5IHRo
ZSBDbGFzc0luZm8uICAKKyAgICAgICAgU2VlIEpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0IGZvciBleHBsYW5hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6
cHVzaEV2ZW50SGFuZGxlclNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tl
dEN1c3RvbS5jcHA6IFJlbW92ZSBmaXJzdCBhcmcgdG8gaXNKU0FycmF5IGNhbGwuCisgICAgICAg
IChXZWJDb3JlOjpKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHA6IEFkZCBzdGF0
aWMgZGVzdHJveS4KKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEJhc2U6OmRlc3Ry
b3kpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaDogCisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOiBSZW1vdmUgZmlyc3QgYXJnIHRvIGlz
SlNBcnJheSBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6anNUb0luc3BlY3RvclZhbHVlKTogCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmlzQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpnZXRTcGFyc2VJbmRleCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6
IFJlbW92ZSB2aXJ0dWFsLW5lc3Mgb2YgYW55IGN1c3RvbSBwdXNoRXZlbnRIYW5kbGVyU2NvcGUg
KHNlZSAKKyAgICAgICAgSlNOb2RlQ3VzdG9tOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUgZm9yIGV4
cGxhbmF0aW9uKS4gIFJlbW92ZSB2aXJ0dWFsIHRvQm9vbGVhbiAKKyAgICAgICAgZm9yIGFueWJv
ZHkgd2hvIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCwgc2luY2Ugb3VyIEpTT2JqZWN0IGltcGxl
bWVudGF0aW9uIGhhbmRsZXMgCisgICAgICAgIHRoaXMgYmFzZWQgb24gdGhlIFR5cGVJbmZvIGlu
IHRoZSBTdHJ1Y3R1cmUuIEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBhbnkgCisg
ICAgICAgIGNsYXNzIG90aGVyIHRoYW4gRE9NV2luZG93IG9yIFdvcmtlckNvbnRleHRzLgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IENoYW5nZSBDbGFzc0luZm8gZGVmaW5pdGlv
bnMgdG8gdXNlIEJhc2U6OnNfaW5mbywgc2luY2UgCisgICAgICAgIHR5cGluZyB0aGUgcGFyZW50
IGNsYXNzIG1vcmUgdGhhbiBvbmNlIGlzIGR1cGxpY2F0aW9uIG9mIGluZm9ybWF0aW9uIGFuZCBp
bmNyZWFzZXMgCisgICAgICAgIHRoZSBsaWtlbGlob29kIG9mIG1pc3Rha2VzLiAgUGFzcyBDbGFz
c0luZm8gdG8gVHlwZUFycmF5RGVzY3JpcHRvcnMgaW5zdGVhZCBvZiB2cHRyLiAKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKTogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBh
c3NlcnQgZm9yIGFsbCBnZW5lcmF0ZWQgY29uc3RydWN0b3JzLgorICAgICAgICAqIGJyaWRnZS9j
L0NSdW50aW1lT2JqZWN0LmNwcDogUmVtb3ZlIGVtcHR5IHZpcnR1YWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5oOiAKKyAgICAgICAgKiBicmlkZ2Uvam5p
L2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHA6IERpdHRvLgorICAgICAgICAqIGJyaWRnZS9qbmkv
anNjL0phdmFSdW50aW1lT2JqZWN0Lmg6IAorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50
aW1lT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2Jq
ZWN0Lm1tOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOiBBZGQgc3RhdGlj
IGRlc3Ryb3kgZm9yIE9iamNGYWxsYmFja09iamVjdEltcC4gRGUtdmlydHVhbGl6ZSAKKyAgICAg
ICAgdG9Cb29sZWFuIGluIHRoZSBzaG9ydCB0ZXJtLiAgTmVlZCBsb25nZXIgdGVybSBmaXguCisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2Uv
cXQvcXRfcnVudGltZS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBRdFJ1bnRpbWVNZXRob2Qu
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3kpOgorICAg
ICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmg6IERlLXZpcnR1YWxpemUgflF0UnVudGltZU1l
dGhvZC4KKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6IERlLXZpcnR1YWxpemUg
ZGVzdHJ1Y3Rvci4gQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSdW50aW1lQXJy
YXk6OmRlc3Ryb3kpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDogUmVtb3ZlIHZ0YWJsZUFuY2hvci4gQWRkIHN0
YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpkZXN0cm95KToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kuCisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmpl
Y3QuaDoKKwogMjAxMS0xMi0xNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNZWRpYSB1cmwgd2l0aCBmcmFnbWVudCBtYXkgbm90IGxvYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCAxN2VjN2I4ZDlkY2QzYmJjZTg1NTRmNmRlMmJmYzZkOWU2YjkzMDE5Li5m
ZWM3YTY4YjQzYzEzMGE4MGZmZjk2OGY4MTI1YzQzNDExYzA3MWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6IFJlbW92ZSBlbXB0eSB2aXJ0dWFsIGRlc3RydWN0b3Iu
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tOgorCiAyMDEx
LTEyLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYktp
dCBjb2RlIHNob3VsZG4ndCBiZSBjYWxsaW5nIGFwcGx5Q29tbWFuZCBkaXJlY3RseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDk1ZjBlMTcyMjIwMGU4MGM1MzFlNzE1NzdjMjljMWVlMDFhY2ZlYTQuLjJlMTdmMTQ5
YWZmZDQ2OGVkOTgwZWFkZTYwMTYwZjkxMWJmMThmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMS0xMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCisgICAgICAgIERlLXZpcnR1YWxpemUgZGVzdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE1ldGhvZC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDogQWRkIHN0YXRp
YyBkZXN0cm95LgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZXN0cm95KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAq
IHdpbi9XZWJLaXQyLmRlZjogQWRkL3JlbW92ZSBuZWNlc3Nhcnkgc3ltYm9scy4KKyAgICAgICAg
KiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6IERpdHRvLgorCiAyMDExLTEyLTE0ICBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgW1F0XSBbV0syXSBNb3ZlIGRvd25sb2FkIGhhbmRsaW5nIG91dCBvZiBRdFdlYlBhZ2VQ
cm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGI2MDFmM2VjYTM0ZGU1YjAwMzczMDA3NjNlNmFiMjU3YmQxNGI0MTEu
LjEzNDllNGYzZjhiN2Y1Y2QyMTNjYWEyYzgyZDUyOWZjYmFhN2FhNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5
LDYgKzU5LDExIEBAIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6fkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cigpCiAgICAgICAgIEpTQ2xhc3NSZWxlYXNlKG1fY2xhc3MpOwogfQogCit2b2lkIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvcio+KGNlbGwpLT5KU0NhbGxiYWNrQ29uc3RydWN0b3I6On5KU0NhbGxi
YWNrQ29uc3RydWN0b3IoKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SlNDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAppbmRleCBiMzIwYTkwMWM5MDQzY2ZkMDc4
MjcxMWI1MzJkODM4NzZlYjgyYjkwLi40M2E3M2MzMTQzNzI2ODU4MzQzOGFlY2Q4ZGJiNWVjNzNk
YTBiODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgfkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cigpOworICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzOyB9CiAgICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxiYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjazsgfQogICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVu
Y3Rpb24uY3BwCmluZGV4IGRkMTA2Y2NlZjIzZGJjN2Q1ZTAzZmRhZDQ3ODlhYjk2OWQxZDNiNmMu
LjNmYmMwMDQ3MDYyZTE3MWEwOTMxNzI5NDkxMzYxZWY4NjVmYTkwZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2Fs
bGJhY2tGdW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0NhbGxiYWNr
RnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0Z1bmN0aW9uOjpzX2luZm8g
PSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrRnVuY3Rpb24pIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCmluZGV4IGZiOWQ3MzAyOWM2
MzAyMGI4Nzk1YjlhZmZmMTc4NWIzYWNmZWE1NmEuLmVmOWNiOTI1YzA5MDQxMTcyNTYxYWU2NDg5
ODJhYjA1NTg1NTVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU3RydWN0dXJlKiBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEK
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZv
KTsgCiB9CiAKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Cit2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3QqPihjZWxsKS0+SlNDYWxsYmFja09iamVjdDo6fkpTQ2FsbGJhY2tPYmplY3QoKTsKK30K
Kwogdm9pZCBKU0NhbGxiYWNrT2JqZWN0RGF0YTo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+IGhh
bmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBzdGF0aWNf
Y2FzdDxKU0NsYXNzUmVmPihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggOTFmZjYyNDlkZGZmOTEwZmE1YzJiMTM1Y2RkNWY2Mjhk
MWIyMmIxNS4uYTUxZWQzZTAxZGViOGVkZDIxNjA5NGEwMDgyNDI4M2FmMzc3Y2VhNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE3Nyw2ICsx
NzcsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCopOwogCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjdlOTM2NDhmZGJhNzUzZjk5YWQ1ZDU2ZjcyM2RjODc0
ZmNiOGY5MS4uMmU0Y2UwMmU1YWNkZmQ5NGE0MTAzYTY5NDRlZDAzMGVhYzYzODQwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xMjUsNiArMTI1LDcgQEAg
X19aTjNKU0MxMUpTQnl0ZUFycmF5MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUVSS04KIF9fWk4zSlNDMTFKU0J5dGVBcnJheTI1Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVy
dHlTbG90RQogX19aTjNKU0MxMUpTQnl0ZUFycmF5M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzExSlNCeXRlQXJyYXk2c19pbmZvRQorX19aTjNKU0MxMUpTQnl0ZUFycmF5N2Rl
c3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0
ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQogX19aTjNKU0MxMVBhcnNlckFyZW5h
NXJlc2V0RXYKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwU291
cmNlQ29kZUVQTlNfN0pTVmFsdWVFCkBAIC0xMzQsMTMgKzEzNSwxMCBAQCBfX1pOM0pTQzEyRGF0
ZUluc3RhbmNlMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFZAogX19aTjNKU0Mx
MkRhdGVJbnN0YW5jZTZzX2luZm9FCiBfX1pOM0pTQzEyRGF0ZUluc3RhbmNlQzFFUE5TXzlFeGVj
U3RhdGVFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTBDbGllbnREYXRh
RDJFdgotX19aTjNKU0MxMkpTR2xvYmFsRGF0YTExanNBcnJheVZQdHJFCiBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRFTlNfMTVUaHJlYWRTdGFja1R5cGVFTlNfOEhlYXBTaXpl
RQotX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEyanNTdHJpbmdWUHRyRQogX19aTjNKU0MxMkpTR2xv
YmFsRGF0YTEyc3RvcFNhbXBsaW5nRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExM3N0YXJ0U2Ft
cGxpbmdFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0ZHVtcFNhbXBsZURhdGFFUE5TXzlFeGVj
U3RhdGVFCi1fX1pOM0pTQzEySlNHbG9iYWxEYXRhMTRqc0Z1bmN0aW9uVlB0ckUKIF9fWk4zSlND
MTJKU0dsb2JhbERhdGExNHJlc2V0RGF0ZUNhY2hlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGEx
NHNoYXJlZEluc3RhbmNlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNWR1bXBSZWdFeHBUcmFj
ZUV2CkBAIC0xNzgsNiArMTc2LDcgQEAgX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjVzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfNkpT
Q2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQ
dXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0aW5pdEVQTlNfOEpTT2Jq
ZWN0RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0NnNfaW5mb0UKK19fWk4zSlNDMTRKU0dsb2Jh
bE9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0RDJF
dgogX19aTjNKU0MxNE1hY2hpbmVUaHJlYWRzMTZhZGRDdXJyZW50VGhyZWFkRXYKIF9fWk4zSlND
MTRNYXJrU3RhY2tBcnJheTZleHBhbmRFdgpAQCAtMTk0LDE0ICsxOTMsMTUgQEAgX19aTjNKU0Mx
NVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlO
U183VW5rbm93bkVFRVAKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhh
bmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgogX19a
TjNKU0MxNWNyZWF0ZVR5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQotX19a
TjNKU0MxNkludGVybmFsRnVuY3Rpb24xMnZ0YWJsZUFuY2hvckV2CiBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbjE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVu
dGlmaWVyRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240bmFtZUVQTlNfOUV4ZWNTdGF0ZUUK
IF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNnNfaW5mb0UKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1
bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFCitfX1pOM0pTQzE2
SlNOb25GaW5hbE9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxNkpTVmFyaWFi
bGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJvbFRhYmxlR2V0
RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTZK
U1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCitf
X1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0Mx
NmNyZWF0ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlND
MTZzbG93VmFsaWRhdGVDZWxsRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0MxNnNsb3dW
YWxpZGF0ZUNlbGxFUE5TXzZKU0NlbGxFCkBAIC0yMTEsNiArMjExLDcgQEAgX19aTjNKU0MxN0pT
QVBJVmFsdWVXcmFwcGVyNnNfaW5mb0UKIF9fWk4zSlNDMTdQcm9wZXJ0eU5hbWVBcnJheTNhZGRF
UE4zV1RGMTBTdHJpbmdJbXBsRQogX19aTjNKU0MxN2NyZWF0ZVN5bnRheEVycm9yRVBOU185RXhl
Y1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uMTRmaW5p
c2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMThE
ZWJ1Z2dlckFjdGl2YXRpb242c19pbmZvRQogX19aTjNKU0MxOERlYnVnZ2VyQWN0aXZhdGlvbkMx
RVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0b3IxMXNldFdy
aXRhYmxlRWIKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0b3IxMnNldFVuZGVmaW5lZEV2CkBA
IC0yNjUsNiArMjY2LDcgQEAgX19aTjNKU0M0WWFycjlpbnRlcnByZXRFUE5TMF8xNUJ5dGVjb2Rl
UGF0dGVybkVSS05TXzdVU3RyaW5nRWpqUGkKIF9fWk4zSlNDNGNhbGxFUE5TXzlFeGVjU3RhdGVF
TlNfN0pTVmFsdWVFTlNfOENhbGxUeXBlRVJLTlNfOENhbGxEYXRhRVMyX1JLTlNfN0FyZ0xpc3RF
CiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9STlNfOENhbGxEYXRhRQogX19aTjNK
U0M2SlNDZWxsMTZnZXRDb25zdHJ1Y3REYXRhRVBTMF9STlNfMTNDb25zdHJ1Y3REYXRhRQorX19a
TjNKU0M2SlNDZWxsN2Rlc3Ryb3lFUFMwXwogX19aTjNKU0M2SlNDZWxsOWdldE9iamVjdEV2CiBf
X1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRU5TXzE0SlNMb2NrQmVoYXZpb3JFCiBfX1pO
M0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRVBOU185RXhlY1N0YXRlRQpAQCAtMjc2LDEzICsy
NzgsMTMgQEAgX19aTjNKU0M2SlNMb2NrOWxvY2tDb3VudEV2CiBfX1pOM0pTQzZKU0xvY2tDMUVQ
TlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDNlJlZ0V4cDVtYXRjaEVSTlNfMTJKU0dsb2JhbERhdGFF
UktOU183VVN0cmluZ0VpUE4zV1RGNlZlY3RvcklpTG0zMkVFRQogX19aTjNKU0M2UmVnRXhwNmNy
ZWF0ZUVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmluZ0VOU18xMVJlZ0V4cEZsYWdzRQot
X19aTjNKU0M2UmVnRXhwRDFFdgogX19aTjNKU0M3SlNBcnJheTEzdmlzaXRDaGlsZHJlbkVQTlNf
NkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDN0pTQXJyYXkxNGZpbmlzaENyZWF0
aW9uRVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDN0pTQXJyYXkxNGZpbmlzaENyZWF0aW9u
RVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0M3SlNBcnJheTE1c2V0
U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0FycmF5MjVnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzdKU0FycmF5NnNfaW5mb0UKK19fWk4zSlNDN0pTQXJyYXk3ZGVzdHJveUVQTlNfNkpTQ2Vs
bEUKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3RoRWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVSTlNf
MTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzdKU0FycmF5QzJFUk5TXzEy
SlNHbG9iYWxEYXRhRVBOU185U3RydWN0dXJlRQpAQCAtMzEzLDcgKzMxNSw2IEBAIF9fWk4zSlND
OEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUFMwX1BOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVMxX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBHZXR0ZXJFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDEybG9va3VwU2V0dGVyRVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3QxMnRvVGhpc09i
amVjdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDOEpTT2JqZWN0MTJ2dGFi
bGVBbmNob3JFdgogX19aTjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxF
Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5T
XzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09i
amVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQUzBfUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCkBAIC0zMzAsNiArMzMxLDcgQEAgX19aTjNK
U0M4SlNPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQUzBfUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXIKIF9fWk4zSlNDOEpTT2JqZWN0MjVnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBf
X1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4SlNP
YmplY3Q2c19pbmZvRQorX19aTjNKU0M4SlNPYmplY3Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9f
Wk4zSlNDOEpTT2JqZWN0OWNsYXNzTmFtZUVQS1MwXwogX19aTjNKU0M4SlNTdHJpbmc2c19pbmZv
RQogX19aTjNKU0M4UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdFUE5TXzlFeGVjU3RhdGVFUktOU183
VVN0cmluZ0UKQEAgLTM1MCw3ICszNTIsNiBAQCBfX1pOM0pTQzlTdHJ1Y3R1cmUzZ2V0RVJOU18x
MkpTR2xvYmFsRGF0YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCiBfX1pOM0pT
QzlTdHJ1Y3R1cmU0MGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVFUFMw
X1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0dXJlNnNf
aW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0ds
b2JhbE9iamVjdEVOU183SlNWYWx1ZUVSS05TXzhUeXBlSW5mb0VQS05TXzlDbGFzc0luZm9FCi1f
X1pOM0pTQzlTdHJ1Y3R1cmVEMUV2CiBfX1pOM0pTQzljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVF
TlNfN0pTVmFsdWVFTlNfMTNDb25zdHJ1Y3RUeXBlRVJLTlNfMTNDb25zdHJ1Y3REYXRhRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQ2VxRVJLTlNfN1VTdHJpbmdFUEtjCiBfX1pOM0pTQ2d0RVJLTlNf
N1VTdHJpbmdFUzJfCkBAIC02MTksMTYgKzYyMCw3IEBAIF9fWk5LM1dURjZTdHJpbmc4dG9JbnRQ
dHJFUGIKIF9fWk5LM1dURjZTdHJpbmc4dG9VSW50NjRFUGIKIF9fWk5LM1dURjZTdHJpbmc5c3Vi
c3RyaW5nRWpqCiBfX1pOSzNXVEY4Q29sbGF0b3I3Y29sbGF0ZUVQS3RtUzJfbQotX19aVFZOM0pT
QzEyU3RyaW5nT2JqZWN0RQotX19aVFZOM0pTQzEzSlNGaW5hbE9iamVjdEUKLV9fWlRWTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0RQotX19aVFZOM0pTQzE0U2NvcGVDaGFpbk5vZGVFCi1fX1pUVk4zSlND
MTVKU1dyYXBwZXJPYmplY3RFCiBfX1pUVk4zSlNDMTVXZWFrSGFuZGxlT3duZXJFCi1fX1pUVk4z
SlNDMTZJbnRlcm5hbEZ1bmN0aW9uRQotX19aVFZOM0pTQzE2SlNWYXJpYWJsZU9iamVjdEUKIF9f
WlRWTjNKU0M4RGVidWdnZXJFCi1fX1pUVk4zSlNDOEpTT2JqZWN0RQotX19aVFZOM0pTQzhKU1N0
cmluZ0UKIF9qc2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0aW9uCiBfa0pTQ2xhc3NEZWZpbml0
aW9uRW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKaW5kZXggZmZkNWE1MjQ2YzU0MjY5YmZiMzQwZGMxYzQ1YmY0NThhMWI0Mzk4ZS4u
ZmM1MTZhYzIzMDA1NmZmMzg2ZTFmZTJkNmM2OGUwZDlkMWNjMDcwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTMzLDExICsz
Myw5IEBAIEVYUE9SVFMKICAgICA/PzFEZWJ1Z2dlckBKU0NAQFVBRUBYWgogICAgID8/MURyb3BB
bGxMb2Nrc0BKU0xvY2tASlNDQEBRQUVAWFoKICAgICA/PzFKU0dsb2JhbERhdGFASlNDQEBRQUVA
WFoKLSAgICA/PzFKU0dsb2JhbE9iamVjdEBKU0NAQFVBRUBYWgotICAgID8/MUpTVmFyaWFibGVP
YmplY3RASlNDQEBVQUVAWFoKKyAgID8/MUpTR2xvYmFsT2JqZWN0QEpTQ0BAUUFFQFhaCiAgICAg
Pz8xTXV0ZXhAV1RGQEBRQUVAWFoKICAgICA/PzFSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RGQEBR
QUVAWFoKLSAgICA/PzFTY29wZUNoYWluTm9kZUBKU0NAQEVBRUBYWgogICAgID8/MVNvdXJjZVBy
b3ZpZGVyQ2FjaGVASlNDQEBRQUVAWFoKICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVA
WFoKICAgICA/PzFXVEZUaHJlYWREYXRhQFdURkBAUUFFQFhaCkBAIC0xNTgsNiArMTU2LDkgQEAg
RVhQT1JUUwogICAgID9kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25AU3RydWN0dXJlQEpTQ0BA
UUFFWEFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9kZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFA
MkBQQVYxMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVzdHJveUBIZWFwQEpTQ0BAUUFFWFha
CisgICAgP2Rlc3Ryb3lASlNCeXRlQXJyYXlASlNDQEBTQVhQQVZKU0NlbGxAMkBAWgorICAgID9k
ZXN0cm95QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQFoKKyAgICA/ZGVzdHJv
eUBKU05vbkZpbmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQFoKICAgICA/ZGV0YWNoQERl
YnVnZ2VyQEpTQ0BAVUFFWFBBVkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/ZGV0YWNoVGhyZWFk
QFdURkBAWUFYSUBaCiAgICAgP2RpZFRpbWVPdXRAVGltZW91dENoZWNrZXJASlNDQEBRQUVfTlBB
VkV4ZWNTdGF0ZUAyQEBaCkBAIC0zNjMsOSArMzY0LDYgQEAgRVhQT1JUUwogICAgID92aXNpdENo
aWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JA
MkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsVGhpc0BKU0NAQEtBWFBBVkpTQ2VsbEAy
QEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/dmlzaXRDaGlsZHJlbkBKU09iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dnRhYmxlQW5jaG9yQEludGVy
bmFsRnVuY3Rpb25ASlNDQEBFQUVYWFoKLSAgICA/dnRhYmxlQW5jaG9yQEpTRmluYWxPYmplY3RA
SlNDQEBFQUVYWFoKLSAgICA/dnRhYmxlQW5jaG9yQEpTT2JqZWN0QEpTQ0BAVUFFWFhaCiAgICAg
P3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZv
clRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0
eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCmluZGV4IDFlMDNjZDFmYTk2OWY3YTZh
ZTgxNDY4NTMxZThkYzk2Y2FkZmUzYWMuLjgwYmUzMTBiNTk1MzA3OGM2ZmRiNmM1NDY4MjcyNWZj
ODI3OWUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC0zMCw2ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRGVidWdnZXJBY3RpdmF0aW9uKTsK
KworY29uc3QgQ2xhc3NJbmZvIERlYnVnZ2VyQWN0aXZhdGlvbjo6c19pbmZvID0geyAiRGVidWdn
ZXJBY3RpdmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShE
ZWJ1Z2dlckFjdGl2YXRpb24pIH07CisKIERlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3Rp
dmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5kZWJ1Z2dlckFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCkp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmgKaW5kZXggNDRkMDlhMTgwNzhjNGRmZTBmN2M3MDNjYjJhNTc2MjFhMDk2MWE2NS4u
NjhjYzNhMzFiMjE4ZTM4MGU2Y2NiZmVjZjMwYWM4MTFmMjUyNmI1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNTIs
NiArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVmaW5lR2V0
dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CisKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpIAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMzJlMzhlMWQ4OGFkYzkwMTJhODdmYjdiMWI2OTE1M2Rm
MzYxZTU3Ny4uOWVkODVjOTI4OTEwODE1ZTRhNjI1OWZmMWM2ZGJkNDkxOWQ4OTRjMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNDQsNyArMTQ0
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LAogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERh
dGEsIGJhc2VWYWx1ZSkpIHsKKyAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAgICAg
ICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgIGlmIChhcnJh
eS0+Y2FuU2V0SW5kZXgoaW5kZXgpKSB7CiAgICAgICAgICAgICBhcnJheS0+c2V0SW5kZXgoKmds
b2JhbERhdGEsIGluZGV4LCB2YWx1ZSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIHVpbnQz
Ml90IGluZGV4LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzSlNCeXRlQXJy
YXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5B
Y2Nlc3NJbmRleChpbmRleCkpIHsKKyAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYm
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGluZGV4KSkgewogICAgICAg
ICBKU0J5dGVBcnJheSogYnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKICAgICAg
ICAgLy8gRklYTUU6IHRoZSBKSVRzdHViIHVzZWQgdG8gcmVsaW5rIHRoaXMgdG8gYW4gb3B0aW1p
emVkIGZvcm0hCiAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKQEAgLTI2OSwxOCArMjY5
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGROb3RO
dW1iZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGlu
ZGV4KQogewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7Ci0KICAgICAvLyBGSVhNRTogdGhlIEpJVCB1c2VkIHRvIGhhbmRsZSB0aGVzZSBpbiBjb21w
aWxlZCBjb2RlIQotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZSkgJiYgYXNBcnJh
eShiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTQXJyYXkoYmFzZSkgJiYg
YXNBcnJheShiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzQXJyYXkoYmFzZSktPmdldEluZGV4KGluZGV4KSk7CiAKICAgICAvLyBGSVhN
RTogdGhlIEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0byBhbiBvcHRpbWl6ZWQgZm9ybSEK
LSAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+
Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5n
KGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNTdHJpbmcoYmFzZSktPmdldEluZGV4KGV4ZWMsIGluZGV4KSk7CiAKICAgICAvLyBGSVhN
RTogdGhlIEpJVHN0dWIgdXNlZCB0byByZWxpbmsgdGhpcyB0byBhbiBvcHRpbWl6ZWQgZm9ybSEK
LSAgICBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlKSAmJiBhc0J5dGVBcnJheShi
YXNlKS0+Y2FuQWNjZXNzSW5kZXgoaW5kZXgpKQorICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2Up
ICYmIGFzQnl0ZUFycmF5KGJhc2UpLT5jYW5BY2Nlc3NJbmRleChpbmRleCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCeXRlQXJyYXkoYmFzZSktPmdldEluZGV4KGV4ZWMsIGlu
ZGV4KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoYmFzZSkuZ2V0KGV4
ZWMsIGluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
cGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAppbmRl
eCAyYjU2ODA4MDRhYzg5YTY4NWQwODVlMTdkODMxYjUzNDU4ZmIxY2QxLi5jNDRlOGI3Mzg5MGNm
YmZkN2ZiZWY2ODI4MzE0MWYzZGYwZmI4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdl
dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmll
cgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAKLSAgICBp
ZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1
ZSkgJiYgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLmJhc2VH
UFIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIg
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKQEAgLTE4Myw3ICsx
ODMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllcgogICAgICAgICAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAgCi0gICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAg
ICAgCiAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3R1
YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09G
RlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc2NyYXRjaEdQUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDliYmZkMzNh
ZTI1ZDJhYzU4MzZlZjRiYTk0ZGRiMjgyNTZhNWVmOWQuLjAyMGYxMmM2YjVhY2FkZGZlZGIzZTVi
OTA3NmM2OTI1YjUzNDlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFu
Y2hOb2QKICAgICAgICAgYWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgbm90VGFrZW4pOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiBu
b2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hl
Y2tlciBwcmVkaWN0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNo
ZWNrKQogewogICAgIE5vZGUmIGJyYW5jaE5vZGUgPSBhdChicmFuY2hOb2RlSW5kZXgpOwogICAg
IEJsb2NrSW5kZXggdGFrZW4gPSBicmFuY2hOb2RlLnRha2VuQmxvY2tJbmRleCgpOwpAQCAtODI1
LDkgKzgyNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVx
dWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hOCiAgICAgR1BSUmVnIG9wMkdQUiA9
IG9wMi5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykp
KTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIo
KSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBh
ZGRCcmFuY2gobV9qaXQuYnJhbmNoUHRyKGNvbmRpdGlvbiwgb3AxR1BSLCBvcDJHUFIpLCB0YWtl
bik7CiAgICAgaWYgKG5vdFRha2VuICE9IChtX2Jsb2NrICsgMSkpCkBAIC04ODcsMTEgKzg4Nywx
MSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYgbm9k
ZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICB9IGVsc2UgaWYg
KG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0
KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAgICAgICAgICAgIGNv
bXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24p
OworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNo
Tm9kZUluZGV4LCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlv
bik7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9k
ZS5jaGlsZDIoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYg
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hp
bGQyKCkpKSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9k
ZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0Fy
cmF5UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0
eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0FycmF5OjpzX2luZm8sIGlzQXJyYXlQcmVkaWN0
aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShu
b2RlLmNoaWxkMigpKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMDY3LDEyICsxMDY3LDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5
VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5
cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
dGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChp
c0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CkBAIC0xMDgyLDQyICsx
MDgyLDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRl
bXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJB
cnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlE
ZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVz
Y3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNj
cmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNj
cmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlE
ZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGlm
IChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKQEAgLTExMjcsMTMgKzExMjcsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBl
bHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGlzSW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewpA
QCAtMTE0MSw0OSArMTE0MSw0OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50
VHlwZXMoKQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmludDhBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNz
SW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVz
Y3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAu
Z3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1f
dnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNl
IGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQx
NkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRh
Z0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgZWxzZSBpZiAoaXNVaW50MzJBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAu
Z3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9j
bGFzc0luZm8pKSk7CiAgICAgICAgIH0gIGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlv
bihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQz
MkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICB9ICAgZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJy
YXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7CiAgICAgICAgIH0gCiAjZW5kaWYKICAgICB9CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2Us
IEdQUlJlZyBwcm9wZXJ0eSwgTgogICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGls
ZDMoKTsKICAgICAKICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUoYmFzZUluZGV4KS5tX3R5cGUpKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2UpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
Qnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHZhbHVlOwogICAgIEdQ
UlJlZyB2YWx1ZUdQUjsKIApAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3Im
IGRlc2MKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIAogICAgIGlm
IChuZWVkc1NwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9y
Lm1fdnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgCiAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIGRlc2NyaXB0b3IubV9sZW5ndGhPZmZzZXQp
LCByZXN1bHRHUFIpOwogICAgIApAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVz
Y3JpcHRvciYKICAgICBOb2RlSW5kZXggdmFsdWVJbmRleCA9IG5vZGUuY2hpbGQzKCk7CiAgICAg
CiAgICAgaWYgKHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzICE9IE5vVHlwZWRBcnJheVR5cGVTcGVj
Q2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgIEdQ
UlRlbXBvcmFyeSB2YWx1ZTsKICAgICBHUFJSZWcgdmFsdWVHUFI7CiAgICAgCkBAIC0xODMxLDcg
KzE4MzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5
cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0bwogICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZUluZGV4KTsKICAgICAKICAgICBpZiAoc3BlY3VsYXRp
b25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKLSAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwg
YmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
ZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICAKQEAgLTIyMDgsOSArMjIwOCw5IEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uCiAgICAgZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKGF0KG5vZGUu
Y2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpCiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21w
YXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgZWxzZSBpZiAobm9kZS5vcCA9PSBDb21w
YXJlRXEgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoYXQobm9kZS5jaGlsZDEo
KSksIGF0KG5vZGUuY2hpbGQyKCkpKSkKLSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5v
ZGUsIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsIGlzRmluYWxPYmplY3RQ
cmVkaWN0aW9uKTsKKyAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0ZpbmFs
T2JqZWN0OjpzX2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICBlbHNlIGlmIChu
b2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheShhdChub2Rl
LmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKQotICAgICAgICBjb21waWxlT2JqZWN0RXF1
YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgaXNBcnJheVByZWRp
Y3Rpb24pOworICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTQXJyYXk6OnNf
aW5mbywgaXNBcnJheVByZWRpY3Rpb24pOwogICAgIGVsc2UKICAgICAgICAgbm9uU3BlY3VsYXRp
dmVOb25QZWVwaG9sZUNvbXBhcmUobm9kZSwgY29uZGl0aW9uLCBvcGVyYXRpb24pOwogICAgIApA
QCAtMjM0MiwyNiArMjM0MiwyNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0
RXEoTm9kZSYgbm9kZSkKICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
YXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewogICAgICAgICBOb2RlSW5k
ZXggYnJhbmNoTm9kZUluZGV4ID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYg
KGJyYW5jaE5vZGVJbmRleCAhPSBOb05vZGUpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9s
ZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCAm
SlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAgICAgICAg
ICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRleDsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0
eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCBpc0ZpbmFsT2Jq
ZWN0UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNG
aW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFy
cmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKICAgICAgICAgTm9k
ZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAg
IGlmIChicmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmdsb2JhbERh
dGEoKS0+anNBcnJheVZQdHIsIGlzQXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGNvbXBp
bGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgJkpTQXJyYXk6
OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgbV9jb21w
aWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQotICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0ciwgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICBjb21waWxl
T2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24p
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMjM4Nyw3ICsyMzg3LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Uo
Tm9kZSYgbm9kZSkKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAg
ICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogCiAgICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIHN0b3JhZ2VSZWcpOwogICAgICAgICAKQEAgLTIzOTcsNTEgKzIzOTcsNTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9k
ZSYgbm9kZSkKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICB9
IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7
CiAgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQnl0ZUFy
cmF5OjpvZmZzZXRPZlN0b3JhZ2UoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKICAgICAgICAgY29u
c3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCkt
PmludDhBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc0ludDhBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VS
ZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsK
ICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBk
ZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CiAgICAgICAg
IGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzSW50MTZBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5m
bykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxz
ZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CiAg
ICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzSW50MzJB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2Ns
YXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAg
IH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgp
KSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9q
aXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlz
VWludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRv
ci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcp
OwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDE2
QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciA9IG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAg
IGlmICghaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
ZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0
b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlVWludDMyQXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCk7
CiAgICAgICAgIGlmICghaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRv
ci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9m
ZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURl
c2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9y
Lm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5j
aGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKICAgICAgICAgY29uc3Qg
VHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0NjRBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc0Zsb2F0NjRBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykp
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0KICAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VSZWcs
IG1fY29tcGlsZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCA2YWQ4ZWIwNGE4YmI5ZmE3MjIzOTA0MWM4ODZmN2I2NTI5MmNjNGZk
Li4wYzE2MzI3MDE3MzA0NWExNDdlMzg1NzcwNzFlN2U0MWNmODU1ODU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xOTUwLDEyICsxOTUw
LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYsIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
Q29uZGl0aW9uLCBTX0RGR09wZXJhdGlvbl9FSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
SW50ZWdlckJyYW5jaChOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgSklUQ29tcGls
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91Ymxl
QnJhbmNoKE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6RG91
YmxlQ29uZGl0aW9uKTsKLSAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5v
ZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hl
Y2tlcik7Ci0gICAgdm9pZCBjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIHZvaWQqIHZwdHIs
IFByZWRpY3Rpb25DaGVja2VyKTsKKyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFs
aXR5KE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qLCBQ
cmVkaWN0aW9uQ2hlY2tlcik7CisgICAgdm9pZCBjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYs
IGNvbnN0IENsYXNzSW5mbyosIFByZWRpY3Rpb25DaGVja2VyKTsKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZUFkZChOb2RlJik7Ci0gICAgdm9pZCBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qo
Tm9kZUluZGV4IHZhbHVlLCB2b2lkKiB2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsK
KyAgICB2b2lkIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggdmFsdWUs
IGNvbnN0IENsYXNzSW5mbyosIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOwogICAgIHZvaWQg
Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYpOwotICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFu
Y2goTm9kZUluZGV4IHZhbHVlLCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2Vu
LCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKKyAgICB2b2lkIGVtaXRP
YmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCB2YWx1ZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxv
Y2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiwgYm9vbCBuZWVkU3BlY3VsYXRpb25D
aGVjayk7CiAgICAgdm9pZCBlbWl0QnJhbmNoKE5vZGUmKTsKICAgICAKICAgICB2b2lkIGNvbXBp
bGVJbnRlZ2VyQ29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOwpAQCAtMjAxMSw4ICsyMDExLDggQEAgcHJpdmF0ZToKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIpLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCk7
CiAgICAgICAgIAotICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyB2dGFibGUKLSAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUikpOworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBjbGFzc0lu
Zm8gcG9pbnRlcgorICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBpbmhlcml0b3JJRC4KICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNzVmMWQ1ZDdmM2Y2ZjQ2OGUwOTFmMjM3MTViZTIyZTcwMmEyZmE3Ni4uMjU1
ZmVjNGVhYjBjMWFjOTc2MjdhZGZmZjcxNjc5NjZiODc3M2UxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xNzEw
LDcgKzE3MTAsNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydFRv
RG91YmxlKEpTVmFsdWVPcGVyYW5kJiBvcCwgRlBSUmVnIHJlcwogICAgIHJldHVybiBub3ROdW1i
ZXI7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2Rl
JiBub2RlLCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVj
aykKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwpAQCAt
MTcyMSw5ICsxNzIxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGUKICAgICBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgCiAgICAgaWYgKCFwcmVk
aWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5j
aGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
dnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihj
bGFzc0luZm8pKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFsc2VDYXNlID0g
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxR1BSLCBvcDJHUFIp
OwogICAgIG1faml0Lm1vdmUoSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMTc4Myw3
ICsxNzgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUmIG5v
ZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3By
KCksIG1fY29tcGlsZUluZGV4KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5kZXgsIHZvaWQqIHZwdHIsIGJv
b2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4IG5vZGVJbmRleCwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5
bG9hZCh0aGlzKTsKQEAgLTE3OTMsNyArMTc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkKiB2
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CiAgICAgaWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBh
eWxvYWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIApAQCAtMTgyMiwxMSArMTgyMiwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRT
cGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewotICAgICAgICBjb21waWxlT2JqZWN0T3JP
dGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFs
T2JqZWN0VlB0ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5h
bE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVj
dE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksIG1faml0Lmdsb2JhbERhdGEoKS0+anNB
cnJheVZQdHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJyYXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSkgewpAQCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxv
YWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXgg
bm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCB2b2lkICp2
cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWtl
biwgQmxvY2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wg
bmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZUluZGV4KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTE4ODEsNyAr
MTg4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5v
ZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgaWYg
KG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZw
dHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXls
b2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCksIHRha2Vu
KTsKICAgICAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTE5MjEsOSArMTkyMSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYgbm9kZSkKIAogICAgICAgICBu
b1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewotICAgICAgICBlbWl0T2Jq
ZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZK
U0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAg
ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCBt
X2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCAmSlNBcnJh
eTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFs
c2U7CkBAIC0yMDk4LDE0ICsyMDk4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2Vs
bC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklU
Q29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9S
ZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQnl0ZUFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRl
QXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5s
b2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CkBAIC0yNjc3LDcgKzI2NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAg
ICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxk
MSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNl
dCgpKSkpOwogICAgICAgICB9CiAKQEAgLTI3OTYsNyArMjc5Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlIGlz
IGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQgd2l0aGluIG1fdmVjdG9y
ICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYgd2UgaGF2ZSBwcmVkaWN0ZWQgdGhl
IGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAgdGhlIGNoZWNrLgogICAgICAgICBp
ZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJh
eVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAg
ICBwcm9wZXJ0eS51c2UoKTsKQEAgLTI5NDAsNyArMjk0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZh
bHVlVGFnR1BSLCBub2RlLmNoaWxkMigpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywg
c3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUik7CiAKICAgICAgICAgaWYgKCFpc0FycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VH
UFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3RvcmFnZUxl
bmd0aEdQUik7CkBAIC0yOTg2LDcgKzI5ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0gc3RvcmFn
ZUxlbmd0aC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZv
KSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9C
SkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIp
OwpAQCAtMzE0OCw3ICszMTQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGFscmVhZHlQcmlt
aXRpdmU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5k
KG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIGFs
cmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVG9QcmltaXRpdmUsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
Uiwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKTsKQEAgLTMyNjksNyArMzI2OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgh
aXNPYmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwodGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BS
KSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmlu
Z1ZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlz
VmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwpAQCAtMzMxNCw3ICszMzE0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAvLyBkbyB0aGUg
c2xvdyAoc3RydWN0dXJlLWJhc2VkKSBjaGVjay4KICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICghaXNG
aW5hbE9iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChwcm90b0dQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3Rv
R1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0ZpbmFsT2JqZWN0VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHByb3RvR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhwcm90b0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwog
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSkpOwpAQCAtMzQ4Niw3ICszNDg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJh
eVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHJlc3VsdEdQUik7CkBAIC0zNTA1LDcgKzM1MDUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzU3RyaW5n
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNT
dHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJl
c3VsdEdQUik7CiAKQEAgLTM1MjEsNyArMzUyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZv
KSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
Qnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5N2I1MTJhZTQ2
MGUzYjEwOTA2NzBiMzAxMTQ3MTJiNDFlYWYyYzg2Li5kNzg3ODZlMjYzZmExYWNjNDlhYzcwMTkz
MGZlYzNmYTZlZjhkY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE3MzcsNyArMTczNyw3IEBAIEpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcg
cmVzdWx0LCBHCiAgICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rp
b25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJl
ZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CkBAIC0xNzQ4LDkgKzE3NDgsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCogdnB0ciwg
UHJlZGljdGlvbkNoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
b3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihj
bGFzc0luZm8pKSk7CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3Mob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZmFsc2VDYXNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3Ax
R1BSLCBvcDJHUFIpOwogICAgIG1faml0Lm1vdmUoSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BS
KTsKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUFkZChOb2RlJiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVj
dWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJM
b2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
LCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGVJbmRleCk7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTE4
MTcsNyArMTgxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkICp2CiAgICAgCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlm
IChuZWVkU3BlY3VsYXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlc3VsdEdQUik7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKQEAgLTE4NDgsMTEgKzE4
NDgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9k
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVj
dE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksIG1faml0Lmdsb2JhbERhdGEoKS0+anNG
aW5hbE9iamVjdFZQdHIsICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JP
dGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlz
RmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7Ci0gICAgICAgIGNvbXBpbGVP
YmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCBtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzQXJyYXlWUHRyLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dp
Y2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnRlZ2VyKCkpIHsKQEAgLTE5MTIsNyArMTkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUmIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRH
UFIsIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaChOb2RlSW5kZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4
IG5vdFRha2VuLCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRl
eCwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBhZGRCcmFuY2gobV9q
aXQuanVtcCgpLCB0YWtlbik7CiAgICAgCiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC0x
OTYxLDkgKzE5NjEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUmIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBl
bHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3Ro
ZXIoKSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0
YWtlbiwgbm90VGFrZW4sIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsICFp
c0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxk
MSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2Jq
ZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJy
YXlPck90aGVyKCkpIHsKLSAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGls
ZDEoKSwgdGFrZW4sIG5vdFRha2VuLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCAh
aXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKTsKKyAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwg
dGFrZW4sIG5vdFRha2VuLCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2Ug
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CkBAIC0yMTMxLDE0ICsyMTMxLDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAg
ICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlz
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQot
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhj
ZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2lu
Zm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRp
Y3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBj
ZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhjZWxsR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGNlbGxH
UFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2lu
Zm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CkBAIC0yNjgwLDcgKzI2ODAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3MoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVn
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxl
bmd0aE9mZnNldCgpKSkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJbiBjYXNlcyB3aGVyZSB0aGVy
ZSBhcmUgc3Vic2VxdWVudCBieV92YWwgYWNjZXNzZXMgdG8gdGhlIHNhbWUgYmFzZSBpdCBtaWdo
dCBoZWxwIHRvIGNhY2hlCkBAIC0yNzkxLDcgKzI3OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBh
cnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBt
X3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNl
IHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lwIHRoZSBjaGVjay4KICAgICAgICAgaWYgKCFp
c0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKICAgICAgICAgcHJvcGVydHkudXNlKCk7CkBAIC0yOTM1LDcgKzI5MzUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIHdy
aXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgbm9kZS5jaGlsZDIoKSwgV3JpdGVCYXJyaWVy
Rm9yUHJvcGVydHlBY2Nlc3MsIHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIpOwogCiAgICAg
ICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkp
OwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVD
VF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpA
QCAtMjk3OCw3ICsyOTc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICBHUFJSZWcgc3RvcmFnZUxlbmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3By
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwg
c3RvcmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBz
dG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTMxMjEsNyArMzEyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBhbHJlYWR5UHJpbWl0aXZlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5
UHJpbWl0aXZlLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgYWxy
ZWFkeVByaW1pdGl2ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAg
ICBhbHJlYWR5UHJpbWl0aXZlLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5m
bykpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9QcmltaXRp
dmUsIHJlc3VsdEdQUiwgb3AxR1BSKTsKQEAgLTMyMzEsNyArMzIzMSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghaXNPYmpl
Y3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGhpc1Zh
bHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSKSwgSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRD
b21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUik7
CiAgICAgICAgICAgICAKQEAgLTMyNzUsNyArMzI3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gZG8gdGhlIHNsb3cgKHN0cnVjdHVyZS1i
YXNlZCkgY2hlY2suCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVGaW5hbE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzRmluYWxPYmplY3RQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocHJvdG9HUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhwcm90b0dQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTRmluYWxPYmplY3Q6OnNfaW5mbykp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocHJvdG9HUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2g4KE1hY3Jv
QXNzZW1ibGVyOjpCZWxvdywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoT2JqZWN0VHlwZSkpKTsKQEAgLTM0MzgsNyArMzQzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkp
LCByZXN1bHRHUFIpOwpAQCAtMzQ1Nyw3ICszNDU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCByZXN1bHRHUFIpOwogCkBAIC0zNDczLDcgKzM0NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNCeXRlQXJy
YXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXpl
KCkpLCByZXN1bHRHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAwNmMw
YWZkZDNlZjRkMTA4MjFiMTA2YmMyM2I3M2JhZjFhMDY3NmMwLi42MWViYTA4YTQ5YzY2ZmU5MjM2
M2M1MDdhNjMxOWM5N2Q4YzcxODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApA
QCAtMzE5LDcgKzMxOSw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBI
ZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMp
CiAgICAgLCBtX3NoYXJlZERhdGEoZ2xvYmFsRGF0YSkKLSAgICAsIG1fc2xvdFZpc2l0b3IobV9z
aGFyZWREYXRhLCBnbG9iYWxEYXRhLT5qc0FycmF5VlB0ciwgZ2xvYmFsRGF0YS0+anNGaW5hbE9i
amVjdFZQdHIsIGdsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikKKyAgICAsIG1fc2xvdFZpc2l0b3Io
bV9zaGFyZWREYXRhKQogICAgICwgbV9oYW5kbGVIZWFwKGdsb2JhbERhdGEpCiAgICAgLCBtX2lz
U2FmZVRvQ29sbGVjdChmYWxzZSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggM2Y0ZmRhNzZjYzRlMzcx
Zjc0ZDZkY2M3MzVjOWI5Mzg0NjNlZjlkNS4uMjg5YzU0MTJmOTUxOWIwMTJmYjc3ZDE2NDlmZWE0
ZWZjZmUzYmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9t
KE1hcmtTdGFja0FycmF5JiBvdGhlcikKIHZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6
bWFya2luZ1RocmVhZE1haW4oKQogewogICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZCgpOwotICAg
IFNsb3RWaXNpdG9yIHNsb3RWaXNpdG9yKCp0aGlzLCBtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRy
LCBtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RWUHRyLCBtX2dsb2JhbERhdGEtPmpzU3RyaW5n
VlB0cik7CisgICAgU2xvdFZpc2l0b3Igc2xvdFZpc2l0b3IoKnRoaXMpOwogICAgIFBhcmFsbGVs
TW9kZUVuYWJsZXIgZW5hYmxlcihzbG90VmlzaXRvcik7CiAgICAgc2xvdFZpc2l0b3IuZHJhaW5G
cm9tU2hhcmVkKFNsb3RWaXNpdG9yOjpTbGF2ZURyYWluKTsKIH0KQEAgLTI5NCw3ICsyOTQsNyBA
QCB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVS
b290cykKICAgICAgICAgaW50ZXJuYWxBcHBlbmQocm9vdHNbaV0pOwogfQogCi1BTFdBWVNfSU5M
SU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0
IEpTQ2VsbCogY2VsbCwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzQXJyYXlWUHRy
LCB2b2lkKiBqc1N0cmluZ1ZQdHIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IEpTQ2VsbCogY2VsbCkKIHsKICNpZiBF
TkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291
bnQoY2VsbCk7CkBAIC0zMDIsMTcgKzMwMiwxNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IEpTQ2VsbCogY2VsbAog
CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKIAotICAgIGlmIChjZWxsLT52cHRy
KCkgPT0ganNTdHJpbmdWUHRyKSB7CisgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsKICAgICAg
ICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlz
aXRvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY2VsbC0+dnB0cigpID09
IGpzRmluYWxPYmplY3RWUHRyKSB7CisgICAgaWYgKGlzSlNGaW5hbE9iamVjdChjZWxsKSkgewog
ICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwp
LCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjZWxsLT52cHRy
KCkgPT0ganNBcnJheVZQdHIpIHsKKyAgICBpZiAoaXNKU0FycmF5KGNlbGwpKSB7CiAgICAgICAg
IEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzgsMTYgKzMzOCwxMiBAQCB2b2lkIFNs
b3RWaXNpdG9yOjpkcmFpbigpCiB7CiAgICAgQVNTRVJUKG1faXNJblBhcmFsbGVsTW9kZSk7CiAg
ICAgCi0gICAgdm9pZCoganNGaW5hbE9iamVjdFZQdHIgPSBtX2pzRmluYWxPYmplY3RWUHRyOwot
ICAgIHZvaWQqIGpzQXJyYXlWUHRyID0gbV9qc0FycmF5VlB0cjsKLSAgICB2b2lkKiBqc1N0cmlu
Z1ZQdHIgPSBtX2pzU3RyaW5nVlB0cjsKLQogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKICAgICBp
ZiAoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CiAgICAgICAgIHdoaWxlICgh
bV9zdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhldXJpc3RpY3M6Om1pbmltdW1OdW1i
ZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkgJiYgY291
bnRkb3duLS07KQotICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2su
cmVtb3ZlTGFzdCgpLCBqc0ZpbmFsT2JqZWN0VlB0ciwganNBcnJheVZQdHIsIGpzU3RyaW5nVlB0
cik7CisgICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVM
YXN0KCkpOwogICAgICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMzU5LDcgKzM1NSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKICAg
ICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7
CiAgICAgICAgIHdoaWxlIChtX3N0YWNrLmNhblJlbW92ZUxhc3QoKSkKLSAgICAgICAgICAgIHZp
c2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3ZlTGFzdCgpLCBqc0ZpbmFsT2JqZWN0VlB0
ciwganNBcnJheVZQdHIsIGpzU3RyaW5nVlB0cik7CisgICAgICAgICAgICB2aXNpdENoaWxkcmVu
KCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5oCmluZGV4IGM1MDgwMTk0ODg3MDE5YzlhOGNkNDhiMzczNzc2
ZDhhOGY5NzhkYTcuLjAzZGVlYWI4NzliZDIxMjczZmIwMWI0ZDczODE0ZTlhMTIwY2JlODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBAIC0yMDQsNyArMjA0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7IC8v
IEFsbG93ZWQgdG8gbWFyayBhIEpTVmFsdWUqIG9yIEpTQ2VsbCoqIGRpcmVjdGx5LgogCiAgICAg
cHVibGljOgotICAgICAgICBNYXJrU3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYsIHZv
aWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciwgdm9pZCoganNTdHJpbmdW
UHRyKTsKKyAgICAgICAgTWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmKTsKICAg
ICAgICAgfk1hcmtTdGFjaygpOwogCiAgICAgICAgIHZvaWQgYXBwZW5kKENvbnNlcnZhdGl2ZVJv
b3RzJik7CkBAIC0yNjcsOSArMjY3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIE1hcmtTdGFja0FycmF5IG1fc3RhY2s7Ci0gICAgICAgIHZvaWQqIG1f
anNBcnJheVZQdHI7Ci0gICAgICAgIHZvaWQqIG1fanNGaW5hbE9iamVjdFZQdHI7Ci0gICAgICAg
IHZvaWQqIG1fanNTdHJpbmdWUHRyOwogICAgICAgICBIYXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJv
b3RzOyAvLyBIYW5kbGUtb3duaW5nIGRhdGEgc3RydWN0dXJlcyBub3QgdmlzaWJsZSB0byB0aGUg
Z2FyYmFnZSBjb2xsZWN0b3IuCiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTI4
NiwxMSArMjgzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtTdGFja1RocmVhZFNo
YXJlZERhdGEmIG1fc2hhcmVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgTWFya1N0YWNrOjpNYXJr
U3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkLCB2b2lkKiBqc0FycmF5VlB0
ciwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0cikKKyAgICBpbmxp
bmUgTWFya1N0YWNrOjpNYXJrU3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVk
KQogICAgICAgICA6IG1fc3RhY2soc2hhcmVkLm1fc2VnbWVudEFsbG9jYXRvcikKLSAgICAgICAg
LCBtX2pzQXJyYXlWUHRyKGpzQXJyYXlWUHRyKQotICAgICAgICAsIG1fanNGaW5hbE9iamVjdFZQ
dHIoanNGaW5hbE9iamVjdFZQdHIpCi0gICAgICAgICwgbV9qc1N0cmluZ1ZQdHIoanNTdHJpbmdW
UHRyKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLCBtX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX2lzRHJhaW5pbmcoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKaW5kZXggZDZmYjg1M2Ex
YzkwNDZhZjI3Mzk0N2NlODVhMWYzNWQ1N2QwNzZmNy4uZjI1MjlmZDRlZmQ0NDU3ZjAzMjEzZDdk
NGY1Zjc4NWI2NjhlZWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcApAQCAtNjAsMTggKzYwLDE3IEBAIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhjb25z
dCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIEhlYXAqIGhlYXAsIHNpCiAgICAg
SEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKIH0KIAotaW5saW5lIHZvaWQg
TWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCwgdm9pZCoganNGaW5hbE9i
amVjdFZQdHIpCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IoSlNDZWxs
KiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIgc3dlZXAgbWF5IGFscmVhZHkgaGF2
ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCiAgICAgaWYgKGNlbGwtPmlzWmFwcGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHZvaWQqIHZwdHIgPSBjZWxsLT52cHRyKCk7CiAjaWYgRU5BQkxF
KFNJTVBMRV9IRUFQX1BST0ZJTElORykKICAgICBtX2hlYXAtPm1fZGVzdHJveWVkVHlwZUNvdW50
cy5jb3VudFZQdHIodnB0cik7CiAjZW5kaWYKLSAgICBpZiAodnB0ciAhPSBqc0ZpbmFsT2JqZWN0
VlB0cikKLSAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOworICAgIGlmIChjZWxsLT5jbGFzc0luZm8o
KSAhPSAmSlNGaW5hbE9iamVjdDo6c19pbmZvKQorICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgp
LT5kZXN0cm95KGNlbGwpOwogCiAgICAgY2VsbC0+emFwKCk7CiB9CkBAIC04NSw3ICs4NCw2IEBA
IE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQog
ICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29kZSBtYWtlcyBubyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUKICAgICAvLyBvcmRlciBvZiB0aGUgZnJlZSBsaXN0LgogICAg
IEZyZWVDZWxsKiBoZWFkID0gMDsKLSAgICB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciA9IG1faGVh
cC0+Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cjsKICAgICBmb3IgKHNpemVfdCBpID0g
Zmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKICAgICAg
ICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkICYmIG1fbWFya3MuZ2V0KGkpKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC05NSw3ICs5Myw3IEBAIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogTWFy
a2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKGJsb2NrU3RhdGUgIT0gTmV3KQotICAgICAgICAgICAgY2FsbERlc3RydWN0b3Io
Y2VsbCwganNGaW5hbE9iamVjdFZQdHIpOworICAgICAgICAgICAgY2FsbERlc3RydWN0b3IoY2Vs
bCk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKICAgICAg
ICAgICAgIEZyZWVDZWxsKiBmcmVlQ2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnJlZUNlbGwqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGFkYzY1
NzI2NDIwNzFhZjNlNzE3Y2FiNmM4YWZmY2ZlY2ZiMzc3NGEuLjhjNjY1ZGQ1YmVkNWIyNDEzZGQz
MDIxN2ZmNzRlNDAwN2FmMWM5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaApAQCAtMTY1LDcgKzE2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJr
ZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBIZWFwKiwgc2l6ZV90IGNlbGxT
aXplKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIo
Y29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQq
IGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwq
KTsKICAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlPiBGcmVlQ2VsbCogc3Bl
Y2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAKICNpZiBFTkFCTEUoR0dDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKaW5kZXggYTQ2MTc4MTRhZTdlMmY2OGFiMzI0ODll
ZTllY2VhNWFlYjhjNjYxMi4uYmIzMDFmYmYxOWM4NTUzNDdmOThmZjljYzMzZDExMzM0NGNkMzgz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBTbG90VmlzaXRvciA6IHB1YmxpYyBNYXJrU3RhY2sg
ewogICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7CiBwdWJsaWM6Ci0gICAgU2xvdFZp
c2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lk
KiBqc0ZpbmFsT2JqZWN0VlB0ciwgdm9pZCoganNTdHJpbmdWUHRyKTsKKyAgICBTbG90VmlzaXRv
cihNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJik7CiAKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAg
ewpAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWlubGluZSBTbG90Vmlz
aXRvcjo6U2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkLCB2b2lk
KiBqc0FycmF5VlB0ciwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0
cikKLSAgICA6IE1hcmtTdGFjayhzaGFyZWQsIGpzQXJyYXlWUHRyLCBqc0ZpbmFsT2JqZWN0VlB0
ciwganNTdHJpbmdWUHRyKQoraW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCisgICAgOiBNYXJrU3RhY2soc2hhcmVkKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAKaW5k
ZXggYjk4ZDFhNTExNzU4NzYwZTA2MGFkZDdlOTE1NGIyOTFkYmVmYWIxNC4uYWNiNDk0MDM0ZmE4
YmQ3N2QwMjI3NzExNzQ3YmUwNTNkY2UxMTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcApAQCAtNTQsNyArNTQsOCBAQCB2b2lkIFZUYWJsZVNw
ZWN0cnVtOjpjb3VudFZQdHIodm9pZCogdlRhYmxlUG9pbnRlcikKIAogdm9pZCBWVGFibGVTcGVj
dHJ1bTo6Y291bnQoSlNDZWxsKiBjZWxsKQogewotICAgIGNvdW50VlB0cihjZWxsLT52cHRyKCkp
OworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNoYW5nZSB0aGlzIGNsYXNzIHRvIGNvdW50IENs
YXNzSW5mb3MgcmF0aGVyIHRoYW4gdnB0cnMKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CiB9CiAK
IHZvaWQgVlRhYmxlU3BlY3RydW06OmR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21t
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggNDliZmRkMDRmMzBjMjBjNTdiM2M1NzJhMzUwYmI5MzRmOGY4NDNkMi4uY2Rh
ZmM4M2QxYjQxNjZmN2U1ZTAwZjA5NTc2MTY5YjYyZDE0NTRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MDYsNyArNTA2
LDcgQEAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGUsIEpTVmFsdWUKICAgICAgICAgcmV0dXJuIG5ld0NhbGxGcmFt
ZTsKICAgICB9CiAKLSAgICBpZiAoaXNKU0FycmF5KCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
YXJndW1lbnRzKSkgeworICAgIGlmIChpc0pTQXJyYXkoYXJndW1lbnRzKSkgewogICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGFzQXJyYXkoYXJndW1lbnRzKTsKICAgICAgICAgdW5zaWduZWQgYXJn
Q291bnQgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJl
Z2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CkBAIC0xNTA4LDEz
ICsxNTA4LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKTsKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVy
dHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChp
c0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9nZXRfYXJy
YXlfbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc0pTU3RyaW5n
KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYg
cHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAg
ICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X3N0cmluZ19sZW5ndGgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMzIxOCw3ICszMjE3LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
IAogICAgICAgICBpbnQgYmFzZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKExJ
S0VMWShpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkpIHsKKyAgICAgICAgaWYgKExJ
S0VMWShpc0pTQXJyYXkoYmFzZVZhbHVlKSkpIHsKICAgICAgICAgICAgIGludCBkc3QgPSB2UENb
MV0udS5vcGVyYW5kOwogICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBq
c051bWJlcihhc0FycmF5KGJhc2VWYWx1ZSktPmxlbmd0aCgpKTsKICAgICAgICAgICAgIHZQQyAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9hcnJheV9sZW5ndGgpOwpAQCAtMzI0Miw3ICszMjQxLDcg
QEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpbnQgYmFzZSA9IHZQQ1syXS51Lm9w
ZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpz
VmFsdWUoKTsKLSAgICAgICAgaWYgKExJS0VMWShpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VW
YWx1ZSkpKSB7CisgICAgICAgIGlmIChMSUtFTFkoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSkgewog
ICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjYWxs
RnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmxl
bmd0aCgpKTsKICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9zdHJpbmdf
bGVuZ3RoKTsKQEAgLTM1MTEsMTUgKzM1MTAsMTUgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAog
ICAgICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICAgICAgaWYgKGlzSlNB
cnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJh
eShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5HZXRJbmRleChp
KSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNBcnJheS0+Z2V0SW5kZXgoaSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0FycmF5
LT5KU0FycmF5OjpnZXQoY2FsbEZyYW1lLCBpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNK
U1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNh
bkdldEluZGV4KGkpKQorICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVl
KSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc0J5
dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChjYWxsRnJhbWUsIGkpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoY2FsbEZyYW1lLCBp
KTsKQEAgLTM1NTMsMTMgKzM1NTIsMTMgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAgICAgdWludDMy
X3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICAgICAgaWYgKGlzSlNBcnJheShn
bG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VW
YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNl
VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKICAg
ICAgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGksIGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGpzQXJyYXktPkpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgY2FsbEZy
YW1lLCBpLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJy
YXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNW
YWx1ZSA9IGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlm
IChqc1ZhbHVlLmlzSW50MzIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGY4M2E3NTk0
OWY2Nzk5MzAwZTJmNzFhNjI0MDM0YWQxOGQ0MGE1OTEuLmU2NGU2OTBmZTc4Yjc5ODAxNjU3YTg3
ZDEyYTdmYTRkNDVhZjIxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzI5LDcgKzMy
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoUmVn
aXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCBzY3JhdGNoLCBS
ZWdpc3RlcklEIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5k
KTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIFJlZ2lzdGVy
SUQgdmFsdWUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyTW9kZSwgV3JpdGVCYXJy
aWVyVXNlS2luZCk7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBl
bmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0
dXJlVHlwZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9y
YWdlUHRyKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBT
dHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlw
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVj
dHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAg
IHZvaWQgZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5jdGlvbkV4ZWN1dGFibGUqLCBSZWdpc3Rl
cklEIHNjb3BlQ2hhaW4sIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIp
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgKaW5kZXggZWZlNzA4MDlmOTI4NzI4MWJkNzUyMWVlNjA1NmRlZDM3YTE1ZTc4OS4uZjQ4NTE1
N2UzODY0YmU2ZWI3YTdkMDE1MTc2YTFkOTE1NDU3NjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAgLTg0LDcgKzg0LDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxl
OjpDYWxsRnJhbWVIZWEKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdExvYWRDaGFyYWN0
ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0LCBKdW1wTGlzdCYgZmFpbHVy
ZXMpCiB7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhz
cmMpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGZh
aWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAg
ICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKDEpKSk7CiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5r
SGVscGVyczo6anNTdHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBl
bmQoYnJhbmNoVGVzdDMyKFplcm8sIGRzdCkpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcih1bnNpZ25lZCBz
cmMpCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMp
ICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0Q29u
c3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUs
IHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlu
bGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0
cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKIHsKICAg
ICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRhLT5oZWFw
LnNpemVDbGFzc0Zvck9iamVjdChzaXplb2YoQ2xhc3NUeXBlKSk7CiAgICAgbG9hZFB0cigmc2l6
ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZXN1bHQpOwpAQCAtNDA5LDEyICs0MDksMTIgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5l
IHZvaWQgSklUOjplbWl0QWxsb2MKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc3RvcmFn
ZVB0cik7CiAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2Vs
bCk7CiAKLSAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyB2dGFibGUKLSAgICBzdG9yZVB0
cihUcnVzdGVkSW1tUHRyKHZ0YWJsZSksIEFkZHJlc3MocmVzdWx0KSk7Ci0KICAgICAvLyBpbml0
aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUKICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIEFk
ZHJlc3MocmVzdWx0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAKKyAgICAvLyBpbml0
aWFsaXplIHRoZSBvYmplY3QncyBjbGFzc0luZm8gcG9pbnRlcgorICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoJkNsYXNzVHlwZTo6c19pbmZvKSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKTsKKwogICAgIC8vIGluaXRpYWxpemUgdGhlIGluaGVyaXRvciBJRAog
ICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKQEAgLTQyNSwxMiArNDI1LDEyIEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lk
IEpJVDo6ZW1pdEFsbG9jCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0
LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7Ci0gICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxK
U0ZpbmFsT2JqZWN0PihzdHJ1Y3R1cmUsIG1fZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVjdFZQdHIs
IHJlc3VsdCwgc2NyYXRjaCk7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0ZpbmFs
T2JqZWN0PihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7CiB9CiAKIGlubGluZSB2b2lkIEpJ
VDo6ZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3Rv
cmFnZVB0cikKIHsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRnVuY3Rpb24+KFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5uYW1lZEZ1bmN0aW9uU3Ry
dWN0dXJlKCkpLCBtX2dsb2JhbERhdGEtPmpzRnVuY3Rpb25WUHRyLCByZXN1bHQsIHN0b3JhZ2VQ
dHIpOworICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGdW5jdGlvbj4oVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPm5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUo
KSksIHJlc3VsdCwgc3RvcmFnZVB0cik7CiAKICAgICAvLyBzdG9yZSB0aGUgZnVuY3Rpb24ncyBz
Y29wZSBjaGFpbgogICAgIHN0b3JlUHRyKHNjb3BlQ2hhaW4sIEFkZHJlc3MocmVzdWx0LCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKaW5kZXggNzA1NGI1MzQxNTY0NzQ5NmUwNzFmYWFkNmNiOWFjZTg0MDUy
MDNmYS4uZjViZTI3OWE2MjljM2UxZmM2ZDU2MmU0OWFhYjNmYWVhMDg0NTk1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFBhc3NS
ZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hp
bmVUcmFtcG9saW5lcyhKU0dsCiAKICAgICAvLyBDaGVjayBlYXggaXMgYSBzdHJpbmcKICAgICBK
dW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMxID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0g
ICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKTsKKyAg
ICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJp
bmc6OnNfaW5mbykpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3Ro
IGZyb20gdGhlIFVzdHJpbmcuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZT
RVRPRihKU1N0cmluZywgbV9sZW5ndGgpKSwgcmVnVDApOwpAQCAtNTc5LDcgKzU3OSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAgICAgCiAgICAg
SnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZElt
bVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAg
aWYgKGRzdCAhPSBzcmMpCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
b252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KCZKU1N0cmluZzo6c19pbmZvKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMGNlYTQ5ZTgyZjMyZGZhMzAyM2NlNjFj
MmJkZWIyNjVmN2ZhYjYwNS4uNTljNDJiOGQ2MDUxNmRkYmVkM2RjOTljNmJjZDFjY2MxN2EyMTQx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApA
QCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbAogICAgIC8vIHJlZ1QwIGhv
bGRzIHBheWxvYWQsIHJlZ1QxIGhvbGRzIHRhZwogCiAgICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNh
c2VzMSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5n
VlB0cikpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0
IHRoZSBsZW5ndGggZnJvbSB0aGUgVXN0cmluZy4KICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCkpLCByZWdUMik7CkBAIC02NzEsNyAr
NjcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAg
SnVtcCBpc0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7
CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtOTYzLDgg
Kzk2Myw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5q
c1N0cmluZ1ZQdHIpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4K
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5n
cyk7CkBAIC0xMDExLDggKzEwMTEsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5PgogICAgIGdl
bmVyaWNDYXNlLmFwcGVuZChnZXRTbG93Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdl
bmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwotICAgIGdlbmVyaWNDYXNl
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIpLCBUcnVzdGVkSW1tUHRy
KG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOworICAgIGdlbmVyaWNDYXNl
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogCiAgICAg
Ly8gU3RyaW5nIGNhc2UuCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGxFcVN0cmluZ3ModGhpcywg
Y3RpX29wX2VxX3N0cmluZ3MpOwpAQCAtMTA0OCw4ICsxMDQ4LDggQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0
cmljdEVxVHkKIAogICAgIC8vIEp1bXAgdG8gYSBzbG93IGNhc2UgaWYgYm90aCBhcmUgc3RyaW5n
cy4KICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgSnVtcCBmaXJzdE5vdFN0cmluZyA9IGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRh
LT5qc1N0cmluZ1ZQdHIpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJl
c3MocmVnVDIpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6
c19pbmZvKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpKTsKICAgICBub3RDZWxsLmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGlu
ayh0aGlzKTsKIApAQCAtMTUyNCw3ICsxNTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVy
dF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQodGhp
c1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCAr
IE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSwgdGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVn
VDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCA2NzE3YTEwYmNiYzc4ZjJiNTRhMzIxODM2NGE3YWRjZDZjYmM2MzFkLi40ODk1
MWU4NzkzNGIwNGMwMjQ1ZjMwODFiYTgzODkzNTk0ZTIyODc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBK
SVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdDsKICAgICBKdW1wTGlzdCBm
YWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIoZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwor
ICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5kIHN0YXJ0
IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAg
aml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zm
c2V0KCkpLCByZWdUMik7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHplcm9FeHRlbmQz
MlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIGJhc2UpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5VlB0cikpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJl
Z1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRy
ZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlND
ZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5vbkNlbGwgPSBq
dW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAg
SnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSk7CisgICAgSnVtcCBub3RTdHJp
bmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAgICAgZW1pdE5h
a2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbChtX2dsb2JhbERhdGEtPmdldENUSVN0dWIoc3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5j
aFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBy
ZWdUMCk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNlZSBjb21tZW50IGluIG9w
X2dldF9ieV92YWwuCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9i
YWxEYXRhLT5qc0FycmF5VlB0cikpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0
KCkpKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHJlZ1QyKTsKQEAgLTU1OSw2ICs1NTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVy
ZQogICAgIC8vIGFuIHVuY29uZGl0aW9uYWwgYmFycmllciBoZXJlLgogICAgIGVtaXRXcml0ZUJh
cnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAorICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpID09IG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwogICAgIHN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogICAgIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQocmVnVDAs
IHJlZ1QxLCBjYWNoZWRPZmZzZXQpOwogCkBAIC02MTgsNyArNjE5LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gJm1fY29kZUJsb2NrLT5n
ZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBhcnJh
eQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5VlB0cikpOworICAgIEp1
bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykp
OwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIHN0
b3JhZ2UKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQo
KSksIHJlZ1QzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGZlYWY4Yjg5ZGU5NDRlZTQxNmM3YTgzZDIyMzc4NGMw
YjlkZDc0MjAuLmI3M2Q3YWI3NTE2MjIxNWEzM2Q3MzVjZWU5N2Y5N2JhM2Q3ZmIyYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFs
U3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OwogICAgIEp1bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChq
aXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihnbG9i
YWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgIAogICAgIC8vIExvYWQgc3Ry
aW5nIGxlbmd0aCB0byByZWdUMSwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhl
IGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBU
aHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMSk7CkBAIC0yMTksNyAr
MjE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpz
QXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogCiAg
ICAgSnVtcCBub25DZWxsID0ganVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFz
ZSBhcnJheSBjaGVjawotICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikp
OworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNf
aW5mbykpOwogICAgIGVtaXROYWtlZENhbGwobV9nbG9iYWxEYXRhLT5nZXRDVElTdHViKHN0cmlu
Z0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5j
aFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7
CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2ds
b2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMSwgcmVn
VDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNj
ZXNzKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAvLyByZWdU
MCBob2xkcyBhIEpTQ2VsbCoKICAgICAKICAgICAvLyBDaGVjayBmb3IgYXJyYXkKLSAgICBKdW1w
IGZhaWx1cmVDYXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVz
dGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKTsKKyAgICBKdW1wIGZhaWx1cmVD
YXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICAKICAg
ICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVn
VDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA0MTM2MTRlOTQ2
MGU5ZGM1ZTc1MGI0ZTA0MWU5Njc0MGQwZWM5N2U0Li45ZWIzOGUwZDY0OTgwZWZmY2I2Nzc3ODIy
MjUzZDViZTliNDk5YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApA
QCAtODc1LDEyICs4NzUsMTIgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICAKICAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CiAKLSAg
ICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09
IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmIChpc0pTQXJyYXko
YmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CiAgICAgICAgIEpJVDo6Y29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoY2FsbEZy
YW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNvZGVCbG9jaywgcmV0dXJuQWRkcmVzcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFs
RGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKSB7CisgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0
eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIC8v
IFRoZSB0cmFkZW9mZiBvZiBjb21waWxpbmcgYW4gcGF0Y2hlZCBpbmxpbmUgc3RyaW5nIGxlbmd0
aCBhY2Nlc3Mgcm91dGluZSBkb2VzIG5vdCBzZWVtCiAgICAgICAgIC8vIHRvIHBheSBvZmYsIHNv
IHdlIGN1cnJlbnRseSBvbmx5IGRvIHRoaXMgZm9yIGFycmF5cy4KICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgcmV0dXJuQWRkcmVzcywgZ2xvYmFsRGF0YS0+
aml0U3R1YnMtPmN0aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUoKSk7CkBAIC0yNDc4LDcgKzI0Nzgs
NiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X3ZhbCkK
ICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBAIC0yNDkyLDEzICsyNDkxLDEzIEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsKQogCiAgICAg
aWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3Jp
cHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZh
bHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgeworICAgICAgICBp
ZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKSB7CiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZy
YW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29w
X2dldF9ieV92YWxfc3RyaW5nKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGFzU3Ry
aW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgICAgICBDSEVD
S19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwg
YmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkg
eworICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CiAgICAgICAgICAgICAvLyBBbGwgZmFzdCBi
eXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZlIGZyb20gZXhjZXB0aW9ucyBzbyByZXR1cm4gaW1t
ZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9uIGNoZWNrcy4KICAgICAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9B
RERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbF9ieXRlX2FycmF5KSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdl
dEluZGV4KGNhbGxGcmFtZSwgaSkpOwpAQCAtMjUxOSw3ICsyNTE4LDYgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92YWxfc3RyaW5nKQogICAgIFNUVUJf
SU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICAKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBz
dGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwpAQCAtMjUyOCwxMSArMjUyNiwxMSBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X3ZhbF9zdHJpbmcpCiAg
ICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWlu
dDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAoaXNKU1N0cmluZyhn
bG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4
KGkpKQorICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VW
YWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgcmVzdWx0ID0gYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGNhbGxGcmFtZSwgaSk7Ci0gICAgICAgICAgICBp
ZiAoIWlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkKKyAgICAgICAgICAgIGlmICgh
aXNKU1N0cmluZyhiYXNlVmFsdWUpKQogICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBG
dW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
QEAgLTI1NDksNyArMjU0Nyw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVl
LCBvcF9nZXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9i
YWxEYXRhOwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCk7CkBAIC0yNTU4LDEzICsyNTU1LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAKICAgICBpZiAoTElLRUxZ
KHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0
LmFzVUludDMyKCk7Ci0gICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAg
ICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAgICAgLy8gQWxsIGZhc3QgYnl0ZSBh
cnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlvbnMgc28gcmV0dXJuIGltbWVkaWF0
ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGNhbGxGcmFtZSwgaSkp
OwogICAgICAgICB9CiAKICAgICAgICAgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChjYWxsRnJhbWUs
IGkpOwotICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkK
KyAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkpCiAgICAgICAgICAgICBjdGlQ
YXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRV
Uk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV92YWwpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRvU3Ry
aW5nKGNhbGxGcmFtZSkpOwpAQCAtMjYwNCwxMyArMjYwMSwxMyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcF9wdXRfYnlfdmFsKQogCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNV
SW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwot
ICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAgICAgICAg
aWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5
ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldElu
ZGV4KGkpKQogICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KCpnbG9iYWxEYXRhLCBp
LCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0
QnlJbmRleChqc0FycmF5LCBjYWxsRnJhbWUsIGksIHZhbHVlKTsKLSAgICAgICAgfSBlbHNlIGlm
IChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5k
ZXgoaSkpIHsKICAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIo
Y3RpX29wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkpOwogICAgICAgICAgICAgLy8gQWxsIGZhc3Qg
Ynl0ZSBhcnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlvbnMgc28gcmV0dXJuIGlt
bWVkaWF0ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCkBAIC0yNjQzLDcgKzI2NDAsNiBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAg
ICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogICAgIAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwogICAgIAogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CkBAIC0yNjUxLDcgKzI2NDcsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsX2J5dGVfYXJyYXkpCiAg
ICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWlu
dDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAoaXNKU0J5dGVBcnJh
eShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFj
Y2Vzc0luZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYg
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAg
IEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIEFsbCBmYXN0IGJ5dGUgYXJyYXkgYWNjZXNzZXMgYXJl
IHNhZmUgZnJvbSBleGNlcHRpb25zIHNvIHJldHVybiBpbW1lZGlhdGVseSB0byBhdm9pZCBleGNl
cHRpb24gY2hlY2tzLgpAQCAtMjY2Niw3ICsyNjYyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpCisg
ICAgICAgIGlmICghaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpKQogICAgICAgICAgICAgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIFNUVUJfUkVUVVJO
X0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9wdXRfYnlfdmFsKSk7CiAgICAgICAgIGJhc2VW
YWx1ZS5wdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTM0MzMsNyAr
MzQyOSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9pc19zdHJp
bmcpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNKU1N0cmluZyhzdGFja0ZyYW1lLmdsb2Jh
bERhdGEsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oaXNKU1N0cmluZyhzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1
ZSgpKSkpOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfaXNf
b2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAppbmRleCBlY2M0OTFlODdiMTE2NzdmYzllOTE4MjE1MTYzOTRmODc1ZmNhNjUwLi5hYjc4
ZWFhOTk3MjU0ZDk4NjY4MDU4MDU1ZmY2NzJjMjFlNDQ5ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtNjAsNyArNjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkSlNTdHJpbmdBcmd1bWVudChpbnQgYXJn
dW1lbnQsIFJlZ2lzdGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFy
Z3VtZW50KGFyZ3VtZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGRzdCwgMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQg
ZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA5ODM2YTEyMDdmY2NhYmZjZGRiZWMzYzg1
MGQ1NjU0MDYwNTBmMDIwLi5kMTE5NWZiZjQ1MTc4OWViZjhhOTQ0ZWFmOWMxYmI2OWZmYmUzM2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcApAQCAtNDEsNiArNDEsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEFycmF5Q29uc3RydWN0b3IpOwor
CiBjb25zdCBDbGFzc0luZm8gQXJyYXlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OmFycmF5Q29uc3RydWN0
b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUNvbnN0cnVjdG9yKSB9OwogCiAvKiBT
b3VyY2UgZm9yIEFycmF5Q29uc3RydWN0b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiNzg0NDEzYWY4ZWI0ZWNkYmJi
YmMzM2E2Yzk1NjkwMDMzYTA5YmMwLi5kOGQxNGYzNGZmMjYwZjdhZDc3MDVmOTQ1ZTJiMzA0OTNk
Y2EzYzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKIAotICAgIGJvb2wgaXNSZWFsQXJy
YXkgPSBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc1ZhbHVlKTsKKyAgICBib29s
IGlzUmVhbEFycmF5ID0gaXNKU0FycmF5KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFpc1JlYWxBcnJh
eSAmJiAhdGhpc1ZhbHVlLmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU0FycmF5KiB0aGlzT2JqID0gYXNBcnJh
eSh0aGlzVmFsdWUpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgc2VwYXJh
dG9yID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBr
ID0gMDsKLSAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7
CisgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodGhpc09iaik7CiAKICAgICAgICAgaWYgKGxlbmd0aCkgewpAQCAtMzg4LDcgKzM4
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOwogCi0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzVmFs
dWUpKQorICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcCgpKTsKIAogICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
IAotICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc1ZhbHVlKSAmJiBl
eGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgeworICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVl
KSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICBKU0FycmF5KiBhcnJh
eSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1c2goZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFy
cmF5LT5sZW5ndGgoKSkpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
c3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gdGhp
c09iai0+Z2V0KGV4ZWMsIDApOwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXNPYmopKQorICAgICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAg
ICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnNoaWZ0Q291bnQoZXhlYywgMSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMTsgayA8IGxlbmd0aDsgaysr
KSB7CkBAIC02MjcsNyArNjI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgYWRkaXRpb25h
bEFyZ3MgPSBzdGQ6Om1heDxpbnQ+KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOwogICAg
IGlmIChhZGRpdGlvbmFsQXJncyAhPSBkZWxldGVDb3VudCkgewogICAgICAgICBpZiAoYWRkaXRp
b25hbEFyZ3MgPCBkZWxldGVDb3VudCkgewotICAgICAgICAgICAgaWYgKCghYmVnaW4pICYmIChp
c0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpKQorICAgICAgICAgICAgaWYg
KCghYmVnaW4pICYmIChpc0pTQXJyYXkodGhpc09iaikpKQogICAgICAgICAgICAgICAgICgoSlNB
cnJheSAqKXRoaXNPYmopLT5zaGlmdENvdW50KGV4ZWMsIGRlbGV0ZUNvdW50IC0gYWRkaXRpb25h
bEFyZ3MpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBrID0gYmVnaW47IGsgPCBsZW5ndGggLSBkZWxldGVDb3VudDsgKytrKSB7CkBAIC02NDMsNyAr
NjQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGlj
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYg
KGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkpCisgICAgICAgICAgICBp
ZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSh0aGlzT2JqKSkpCiAgICAgICAgICAgICAgICAgKChK
U0FycmF5ICopdGhpc09iaiktPnVuc2hpZnRDb3VudChleGVjLCBhZGRpdGlvbmFsQXJncyAtIGRl
bGV0ZUNvdW50KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgayA9IGxlbmd0aCAtIGRlbGV0ZUNvdW50OyBrID4gYmVnaW47IC0taykgewpAQCAtNjc2
LDcgKzY3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNV
blNoaWZ0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIG5yQXJncyA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsKICAgICBpZiAoKG5yQXJncykgJiYgKGxlbmd0aCkpIHsKLSAgICAgICAg
aWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkKKyAgICAgICAgaWYg
KGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgICAgICgoSlNBcnJheSAqKXRoaXNPYmopLT51
bnNoaWZ0Q291bnQoZXhlYywgbnJBcmdzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiAwOyAtLWspIHsKQEAgLTcxNSw3ICs3MTUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRmlsdGVyKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGZpbHRlckluZGV4ID0gMDsKICAgICB1bnNpZ25l
ZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFz
RnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhp
c09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTc3
Myw3ICs3NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
TWFwKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTQXJyYXkqIHJlc3VsdEFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBsZW5ndGgpOwogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzT2JqKSkgeworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJh
eSh0aGlzT2JqKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlv
bik7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAg
Q2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7CiAKICAgICB1bnNp
Z25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXko
JmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9
IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXko
dGhpc09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAg
LTg5Miw3ICs4OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVj
LT5hcmd1bWVudCgxKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkg
eworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBj
YWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtOTQ0LDcgKzk0NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsK
LSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBp
c0pTQXJyYXkodGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24o
ZnVuY3Rpb24pOwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAg
ICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTEwMDIsNyArMTAw
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
IAogICAgIEpTQXJyYXkqIGFycmF5ID0gMDsKLSAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXNPYmopKQorICAgIGlmIChpc0pTQXJyYXkodGhpc09iaikpCiAgICAgICAg
IGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPj0gMikKQEAgLTEwNzksNyArMTA3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSAwOwot
ICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgaWYg
KGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwog
ICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCmluZGV4IGRj
MjhkZTE0MzE4MTI2NTgxMWMyYmYxNTk3MDJhZDI3MzUwYzIzYWIuLmE1NGQyODFhN2UwYmE0N2Vl
ZWEwYjc3NzU5NmI3OGIyNzFkMzhiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbkNvbnN0cnVj
dG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEJvb2xlYW5Db25zdHJ1Y3Rvcik7
CiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFuQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShCb29sZWFuQ29u
c3RydWN0b3IpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bk9iamVjdC5jcHAKaW5kZXggNWE0NDljMDYzOTM3NTc1MjUzODEyMWE5MTQ2OGIxNzk1NTc4MjI3
My4uMzdjNmVhYjBkZGVjZTNmNTRjM2VjYWM5MmFkODkyZjNmZDUyODBiOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKQEAgLTI0LDYgKzI0
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xl
YW5PYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoQm9vbGVhbk9iamVjdCk7
CiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFuT2JqZWN0OjpzX2luZm8gPSB7ICJCb29sZWFuIiwg
JkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJvb2xl
YW5PYmplY3QpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhblByb3RvdHlwZS5jcHAKaW5kZXggYzdlYTk2NGVjN2UzZTVmMzk0YWUxY2JhYmUwYzdmMmUy
YWUwZDQyOC4uYjk2MDVkMGNmYzdmZjA4YTIwMGViOWQ1MzljYjE4NmMxYWJmMDhmNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5Qcm90b3R5cGU6OnNfaW5m
byA9IHsgIkJvb2xlYW4iLCAmQm9vbGVhbk9iamVjdDo6c19pbmZvLAogKi8KIAogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEJvb2xlYW5Qcm90b3R5cGUpOwogCiBCb29sZWFuUHJvdG90eXBlOjpCb29sZWFu
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBC
b29sZWFuT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAwOWZlZGIzZjRlODMzYTRiZjIzMjZl
ODgxZTkwYTZkZmMzZDBkNzYyLi45ZmZmNjRlNjc1YTUwNTM4MDEzZGYxNTgxYTIxODQ3OGFkZjk4
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMzMs
NiArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogCiAgICAg
c3RydWN0IE1ldGhvZFRhYmxlIHsKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVzdHJveUZ1bmN0
aW9uUHRyKShKU0NlbGwqKTsKKyAgICAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3k7CisK
ICAgICAgICAgdHlwZWRlZiB2b2lkICgqVmlzaXRDaGlsZHJlbkZ1bmN0aW9uUHRyKShKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogICAgICAgICBWaXNpdENoaWxkcmVuRnVuY3Rpb25QdHIgdmlzaXRD
aGlsZHJlbjsKIApAQCAtMTE0LDYgKzExNyw3IEBAIHN0cnVjdCBNZW1iZXJDaGVjayMjbWVtYmVy
IHsgXAogI2RlZmluZSBIQVNfTUVNQkVSX05BTUVEKGtsYXNzLCBuYW1lKSAoTWVtYmVyQ2hlY2sj
I25hbWU8a2xhc3M+OjpoYXMpCiAKICNkZWZpbmUgQ1JFQVRFX01FVEhPRF9UQUJMRShDbGFzc05h
bWUpIHsgXAorICAgICAgICAmQ2xhc3NOYW1lOjpkZXN0cm95LCBcCiAgICAgICAgICZDbGFzc05h
bWU6OnZpc2l0Q2hpbGRyZW4sIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0Q2FsbERhdGEsIFwK
ICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0Q29uc3RydWN0RGF0YSwgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTMxODk5ZWIw
YTNjZWQ3NTY3YjhlOGNkZjdlZDBjNGQ0YjllZjUzMi4uYWQ0MDJjNzc1MWQ5YTdkYzQzYmQ3NjBk
ZjlhYzU4MDFmZGU3NzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBE
YXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246
OnNfaW5mCiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKERhdGVDb25zdHJ1Y3Rvcik7
CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihEYXRlQ29uc3RydWN0b3IpOwogCiBEYXRl
Q29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5jcHAKaW5kZXggNTQ1NzU3YjkzZjQ3YjY1NGZhYWI3M2E4ZGRkNGRhNjNjODllM2M4
YS4uYTUwMjc3MGM4NzUwOGI3MmU0ZjI0OThkZDljNzYyNzVjY2I3OGZlYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC01Myw2ICs1Mywx
MSBAQCB2b2lkIERhdGVJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBkb3VibGUgdGltZSkKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIGpz
TnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAKK3ZvaWQgRGF0ZUluc3RhbmNlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8RGF0ZUluc3RhbmNlKj4oY2VsbCktPkRhdGVJ
bnN0YW5jZTo6fkRhdGVJbnN0YW5jZSgpOworfQorCiBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
RGF0ZUluc3RhbmNlOjpjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiB7CiAgICAgZG91YmxlIG1pbGxpID0gaW50ZXJuYWxOdW1iZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKaW5kZXggMzI0MTcwYjFjYWY0
MDgwNzdkMGZlNDUxZDhiZjU1NWUwNjY0OWMwMC4uOGQ5MGNmMGM0MTdhZjg4MzU3Y2YwOGRmMmM4
OWViMjM0MWM0MTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmgKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmLCBkb3VibGUpOwotICAgICAgICAKKworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOworIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1dyYXBwZXJPYmpl
Y3QgQmFzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDRh
MWUxNDgyMDU1ZDlhY2QyNzdlNTQ1NjFiMzdiZjIxNjkxNmQ2OWIuLmE1MzczZDUyNWNhMTY2NDVj
OGEyZWYzYWQ4NWQ4OWI0NTJjMDI0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAKQEAgLTE3MCw2ICsxNzAsMTEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKSB9
OwogCit2b2lkIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit7CisgICAganNDYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGNlbGwpLT5T
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246On5TdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24o
KTsKK30KKwogSlNWYWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5oCmluZGV4IGFjNzM1NGQzMTcyMDRjZTdhNzdjOWU4ZTA5ZjAzZTczZWExYTJm
MjMuLjE3YzM0OThiY2ZmNDkzNTlmZjg2NGYxZTE4YWIzYTQwNDEyNzNiNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtODIsNiArODIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKKwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNTIzMDlkMWZkNmFhOTc0Mzk5YzY1NDdiNTYzNWZlNThlNjk0NGZm
Yy4uYzhmOTNiYTMyM2NjNWRjN2E3ZTM4Zjc1MjdiMGYyM2RjYzg4ZjMwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEVycm9yQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRXJyb3JD
b25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RXJyb3JDb25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA4M2FiZTVjMjYwMDY1MDYwNTdjMjAzM2Y2Y2JhMjg4
MjJlZmRkZWM3Li45MWE2ZmM0MGVhYjgxMTdkNmM1MWM5MGZiMmQwODNhZWIzOGNjYjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAt
MjMsNiArMjMsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoRXJyb3JJbnN0YW5jZSk7CisKIGNvbnN0IENsYXNzSW5mbyBFcnJvckluc3RhbmNl
OjpzX2luZm8gPSB7ICJFcnJvciIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoRXJyb3JJbnN0YW5jZSkgfTsKIAogRXJyb3JJbnN0YW5jZTo6RXJy
b3JJbnN0YW5jZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAppbmRleCBkNWFjZTgwN2E0ZDNiOThjMmE3MzIyMmQ2NjE1NzFhYTk1MmM3MDIzLi4wNWU5
NzFmN2ZmMDViM2U2NDRlYWJiOTZiNWNjMDY5NTllNmQ4YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNDEsNiArNDEs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcik7CisKIGNvbnN0IENsYXNzSW5mbyBJbnRlcnJ1cHRl
ZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRlcnJ1cHRlZEV4ZWN1
dGlvbkVycm9yKSB9OwogCiBKU1ZhbHVlIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSBoaW50KQpAQCAtNjYsNiArNjgsOCBAQCBib29sIGlzSW50ZXJydXB0ZWRFeGVjdXRp
b25FeGNlcHRpb24oSlNWYWx1ZSB2YWx1ZSkKIH0KIAogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOworCiBjb25zdCBDbGFzc0luZm8gVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvcikgfTsKIAogSlNWYWx1ZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAppbmRleCA2NGU5MmU4YWYxZGZlMTNmYzExNmM2NTgwOWYwYTUxNjc4M2NiM2IyLi5h
ZDg2NDYzZGJmNDc3MmIxYTZkZjNjZDNiYTQ1MWQxZDhjNTExNDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzgsNiArMzgsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBFeGVjdXRhYmxlQmFzZTo6c19pbmZvID0g
eyAiRXhlY3V0YWJsZSIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZUJh
c2UpIH07CiAKK3ZvaWQgRXhlY3V0YWJsZUJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KGNlbGwpLT5FeGVjdXRhYmxlQmFzZTo6fkV4ZWN1
dGFibGVCYXNlKCk7Cit9CisKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUo
KQogewogI2lmIEVOQUJMRShKSVQpCkBAIC02MSw4ICs2Niw5IEBAIEludHJpbnNpYyBFeGVjdXRh
YmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1
dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlOjp+TmF0aXZlRXhlY3V0YWJsZSgpCit2b2lkIE5hdGl2ZUV4ZWN1dGFi
bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxOYXRpdmVFeGVjdXRhYmxl
Kj4oY2VsbCktPk5hdGl2ZUV4ZWN1dGFibGU6On5OYXRpdmVFeGVjdXRhYmxlKCk7CiB9CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKQEAgLTkzLDYgKzk5LDExIEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJs
ZTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0
YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKK3Zv
aWQgU2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0
PFNjcmlwdEV4ZWN1dGFibGUqPihjZWxsKS0+U2NyaXB0RXhlY3V0YWJsZTo6flNjcmlwdEV4ZWN1
dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJFdmFsRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKIEV2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpblN0cmljdENvbnRleHQpCkBAIC0xMDAsOCArMTExLDkgQEAgRXZhbEV4ZWN1dGFibGU6OkV2
YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGkKIHsKIH0KIAotRXZhbEV4ZWN1dGFibGU6On5FdmFsRXhlY3V0YWJsZSgpCit2b2lkIEV2
YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8RXZhbEV4
ZWN1dGFibGUqPihjZWxsKS0+RXZhbEV4ZWN1dGFibGU6On5FdmFsRXhlY3V0YWJsZSgpOwogfQog
CiBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlByb2dyYW1F
eGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKQEAgLTExMSw4ICsxMjMsOSBAQCBQcm9ncmFt
RXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCiB7CiB9CiAKLVByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1
dGFibGUoKQordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7
CisgICAganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRhYmxl
Ojp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFi
bGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUp
IH07CkBAIC0xMzcsOCArMTUwLDkgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1
dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLAogewogfQogCi1G
dW5jdGlvbkV4ZWN1dGFibGU6On5GdW5jdGlvbkV4ZWN1dGFibGUoKQordm9pZCBGdW5jdGlvbkV4
ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihjZWxsKS0+RnVuY3Rpb25FeGVjdXRhYmxlOjp+RnVuY3Rpb25FeGVjdXRhYmxl
KCk7CiB9CiAKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA2Mzk1ODQzYWMyZDNlYWM2YzFl
NDM0YjhhYzJhMDJjYmI3YzA0ZjI3Li43Zjg1YzkwMjcwN2U2ZWJhNjdlNjZmNzc1MGExZDBlZDI1
MWNlMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBA
IC03Nyw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OworCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoKG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPT0gTlVNX1BBUkFNRVRFUlNf
SVNfSE9TVCkgPT0gKG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9PSBOVU1fUEFSQU1FVEVS
U19JU19IT1NUKSk7CkBAIC0yMDYsNyArMjA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgfk5hdGl2ZUV4ZWN1dGFibGUoKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yOyB9CkBAIC0yNzQsNiArMjc2
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7IH0KICAgICAgICAg
Y29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlk
ZXIoKS0+dXJsKCk7IH0KQEAgLTMxOCw3ICszMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCi0gICAgICAg
IHZpcnR1YWwgfkV2YWxFeGVjdXRhYmxlKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGUoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiAgICAgICAgIHsKQEAgLTM5MSw3ICszOTUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlOwogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBKU09iamVjdCogY29tcGls
ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKICAgICAg
ICAgewpAQCAtNDY4LDcgKzQ3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGV4ZWN1dGFibGU7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5GdW5jdGlvbkV4
ZWN1dGFibGUoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
ICAgICBKU0Z1bmN0aW9uKiBtYWtlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggYmU0YzYzYzQ1NzZjZTc0MDFkMWZj
OTAxNjllZTQ2ZjMwNzVlNmUwNi4uZTA4ZTU4YzgzNWE4ZDJmZDE1ZGEzZGJmMDg4NmFjOWJkOTE3
NDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uQ29uc3RydWN0b3IpOworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNz
SW5mbyBGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCmluZGV4IDE5ODk4MjdiMmZkYWY3NWYxZTg5NzJhNjY0NGZmNmI1ZjZhZjJhMjkuLmIx
MDE3ZTQ5MzcyZTM1NzExNmQwZTllMjU4MGVjYWNkOTc2YTQyODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1
bmN0aW9uUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEZ1bmN0aW9u
UHJvdG90eXBlKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RnVuY3Rpb25Qcm90b3R5cGUpIH07CiAKQEAgLTEzNiw3ICsxMzcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgaWYgKGFzQXJndW1lbnRzKGFycmF5KS0+bGVuZ3RoKGV4ZWMpID4gQXJndW1l
bnRzOjpNYXhBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgICAgICBhc0FyZ3VtZW50
cyhhcnJheSktPmZpbGxBcmdMaXN0KGV4ZWMsIGFwcGx5QXJncyk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KSkgeworICAgICAgICB9IGVs
c2UgaWYgKGlzSlNBcnJheShhcnJheSkpIHsKICAgICAgICAgICAgIGlmIChhc0FycmF5KGFycmF5
KS0+bGVuZ3RoKCkgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAg
ICAgICAgICAgIGFzQXJyYXkoYXJyYXkpLT5maWxsQXJnTGlzdChleGVjLCBhcHBseUFyZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXgg
MTdjYmI0NDlmMmM2ZDcxNzEzYTVlYjE1NjBkZjcyZTcyYzE5Mjk3MS4uOTIwMzk5ZGRhM2YzOGJm
ODc3MWVlNTA1ZjY2ZDE5NGJkZGU5YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihHZXR0ZXJTZXR0ZXIpOworCiBj
b25zdCBDbGFzc0luZm8gR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJHZXR0ZXJTZXR0ZXIiLCAw
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdldHRlclNldHRlcikgfTsKIAogdm9pZCBHZXR0
ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKaW5kZXggM2EzNzFmOTUwZDNjZTNhMDc1M2Q4MGRmOGIyYjk0MzU2YzNmNWRk
OC4uZTVlMWMyYWU1ZjJhYTNjY2E2NWUzZTk2OGQ0NTQ2Mzg1ODVhZGI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAK
QEAgLTU3LDcgKzU3LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQog
I2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICBXcml0ZUJhcnJpZXJDb3Vu
dGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCi0gICAgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJz
KCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKEFTU0VNQkxFUikKICAgICBFeGVjdXRhYmxl
QWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMTcxNDE2
Mzc2NzEzOWI2MDNkYzQ2NmRlMzVkYjk2ODliMzdiOWIzYS4uNTBlYTUwNGMxYTkzOTZkMjllZTU3
N2EzN2ZlNWQwYTMzZGQ3MWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTI5LDE4ICsyOSwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotLy8gRW5zdXJlIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSB2dGFibGUgZm9y
IEludGVybmFsRnVuY3Rpb24hCi12b2lkIEludGVybmFsRnVuY3Rpb246OnZ0YWJsZUFuY2hvcigp
IHt9Ci0KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50ZXJuYWxGdW5jdGlvbik7CitBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihJbnRlcm5hbEZ1bmN0aW9uKTsKIAogY29uc3QgQ2xh
c3NJbmZvIEludGVybmFsRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkpTTm9uRmlu
YWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRlcm5hbEZ1bmN0
aW9uKSB9OwogCi1JbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGlu
Z0hhY2tUeXBlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQotewot
fQotCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVj
dChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewpAQCAtNjMsNyArNTYs
NyBAQCBjb25zdCBVU3RyaW5nIEludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1l
KTsKICAgICAKLSAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xvYmFs
RGF0YSgpLCBkaXNwbGF5TmFtZSkpCisgICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmco
ZGlzcGxheU5hbWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlH
ZXRWYWx1ZSgpOwogICAgIAogICAgIHJldHVybiBVU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggOGUyMTc4ZTNmNjU5
NzhhOWMxYWVhZTlhNDU1ZjYyOWJmMTRjYWYwMy4uYTAzOGI3YWUxOTc4OGJmZjQ0NWYwMjgyMjcy
NGVjODZjYzgxMjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaApAQCAtNDksMTcgKzQ5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0g
ICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVuY3Rp
b24gdnB0cgotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsK
LQogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2
dGFibGVBbmNob3IoKTsKICAgICB9OwogCiAgICAgSW50ZXJuYWxGdW5jdGlvbiogYXNJbnRlcm5h
bEZ1bmN0aW9uKEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IGIxYjMzZjVkN2JhYTRlYzlkNmU5ZjRlOTMz
ZDc0MjEwOWM4NDQ0ZDMuLjg1MTcwODVkZmVlMjY4ZjNmNGY3OTZiODE2NDIwZDcyN2EyNGM5ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3Jh
cHBlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTQVBJVmFsdWVXcmFwcGVyKTsKKwogY29uc3QgQ2xhc3NJ
bmZvIEpTQVBJVmFsdWVXcmFwcGVyOjpzX2luZm8gPSB7ICJBUEkgV3JhcHBlciIsIDAsIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNBUElWYWx1ZVdyYXBwZXIpIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBm
NzU2YzdiZTI0YTllNGQ1ODk3OGMwYTVmMjY1MzJlNGRlYmNhMmExLi4wYzkyMjBlNjI2ZDI1ZTY2
MWIxYTRmMjBiOWQ4ZjJkYzU5MWM5ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcApAQCAtMTI2LDExICsxMjYsNiBAQCBpbmxpbmUgdm9pZCBKU0FycmF5Ojpj
aGVja0NvbnNpc3RlbmN5KENvbnNpc3RlbmN5Q2hlY2tUeXBlKQogCiAjZW5kaWYKIAotSlNBcnJh
eTo6SlNBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qo
VlB0clN0ZWFsaW5nSGFjaykKLXsKLX0KLQogSlNBcnJheTo6SlNBcnJheShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CkBAIC0yNzcsMTMgKzI3MiwxOCBAQCB2b2lkIEpT
QXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNW
YWx1ZSogdmFsdWVzLCBzaQogCiBKU0FycmF5Ojp+SlNBcnJheSgpCiB7Ci0gICAgQVNTRVJUKHZw
dHIoKSA9PSBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyKTsKKyAgICBBU1NFUlQoanNDYXN0PEpT
QXJyYXkqPih0aGlzKSk7CiAgICAgY2hlY2tDb25zaXN0ZW5jeShEZXN0cnVjdG9yQ29uc2lzdGVu
Y3lDaGVjayk7CiAKICAgICBkZWxldGUgbV9zdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwOwogICAg
IGZhc3RGcmVlKG1fc3RvcmFnZS0+bV9hbGxvY0Jhc2UpOwogfQogCit2b2lkIEpTQXJyYXk6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCktPkpTQXJy
YXk6On5KU0FycmF5KCk7Cit9CisKIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGU5NThk
NTUyZjJmZWNmNGJkMTdkOWZjNWVhODU0ZTZlNmZiYzhjZTIuLjFlYWQ4MmM4NjlkMTM3MWMxMjdm
NzFhY2ZjY2Y3NzEwZmY0N2NiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKQEAgLTcxLDggKzcxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgICAgICBKU0FycmF5KFZQ
dHJTdGVhbGluZ0hhY2tUeXBlKTsKLSAgICAgICAgdmlydHVhbCB+SlNBcnJheSgpOworICAgICAg
ICB+SlNBcnJheSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAg
ICAgICAgIHN0YXRpYyBKU0FycmF5KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewpAQCAtMjE2LDggKzIxNiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gYXNBcnJheSh2YWx1ZS5hc0NlbGwoKSk7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
SlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNBcnJh
eVZQdHI7IH0KLSAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KGdsb2JhbERh
dGEsIHYuYXNDZWxsKCkpOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2Vs
bCkgeyByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQorICAg
IGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYg
aXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKICAgICAvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFi
b3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCiAgICAgLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0
cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAt
IDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcAppbmRleCBjZjBiYTgzNTg1OGIzYjNhNWUxNDdkZWQ1NjgzNjM3MzNiNzFmN2NmLi4wZTVh
OTlhZTViZjg2OGUwMzA2MTkzMzE0Y2RlOGViNmY0YmMxOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQm91bmRG
dW5jdGlvbik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0JvdW5kRnVuY3Rpb24p
OwogCiBjb25zdCBDbGFzc0luZm8gSlNCb3VuZEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCb3VuZEZ1bmN0
aW9uKSB9OwogCkBAIC0zOCw3ICszOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Ym91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTQm91bmRGdW5jdGlv
biogYm91bmRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKTsKIAotICAgIEFTU0VSVChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgYm91
bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKKyAg
ICBBU1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKSk7IC8vIEN1cnJl
bnRseSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYXNBcnJheShib3Vu
ZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OwpAQCAtNTgsNyArNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKTsKIAotICAgIEFTU0VSVChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgYm91bmRG
dW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKKyAgICBB
U1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKSk7IC8vIEN1cnJlbnRs
eSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYXNBcnJheShib3VuZEZ1
bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IDk5
NzNjNTY2MWIyZTk3MjE3MjE1YzRiMzY2Yzc3YzQwZTcxODcwYTQuLjc0NzhhMDhmYmE0OTM5NDdl
OGFjNmY4NjhkNTRiMTVlNjVkNWRiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTQxLDEzICs0MSwxNSBAQCBKU0J5dGVBcnJheTo6SlNC
eXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5
KiBzdG9yYQogewogfQogICAgICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBKU0J5dGVBcnJh
eTo6fkpTQnl0ZUFycmF5KCkKIHsKLSAgICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6
anNCeXRlQXJyYXlWUHRyKTsKKyAgICBBU1NFUlQoanNDYXN0PEpTQnl0ZUFycmF5Kj4odGhpcykp
OwogfQotI2VuZGlmCiAKK3ZvaWQgSlNCeXRlQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIGpzQ2FzdDxKU0J5dGVBcnJheSo+KGNlbGwpLT5KU0J5dGVBcnJheTo6fkpTQnl0ZUFy
cmF5KCk7Cit9CiAKIFN0cnVjdHVyZSogSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggMDA0MWQxNGM0NDAw
MTU4YjNlYWUxYjNhZWYyZDRhZWQ5ZmUxZmYzZS4uNTEyMmJhZDVlZmE0NzNiNjg4NDBmMTM2MDRk
YTc5ZTQ5YzM1MWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCeXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVB
cnJheS5oCkBAIC0xMDIsOSArMTAyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgV1RG
OjpCeXRlQXJyYXkqIHN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuZ2V0KCk7IH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgdmlydHVhbCB+SlNCeXRlQXJyYXkoKTsK
LSNlbmRpZgorICAgICAgICB+SlNCeXRlQXJyYXkoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mU3RvcmFnZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0J5dGVBcnJheSwgbV9zdG9yYWdlKTsgfQogCkBA
IC0xMTgsMTEgKzExNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICAgICAg
ICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQogICAgICAgICBSZWZQdHI8V1RGOjpCeXRlQXJyYXk+IG1fc3RvcmFnZTsKICAgICB9
OwogICAgIApAQCAtMTMyLDcgKzEyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNCeXRlQXJyYXkqPih2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCi0g
ICAgaW5saW5lIGJvb2wgaXNKU0J5dGVBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpT
VmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xv
YmFsRGF0YS0+anNCeXRlQXJyYXlWUHRyOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0J5dGVBcnJh
eShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZv
KCkgPT0gJkpTQnl0ZUFycmF5OjpzX2luZm87IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDQ5MWVmMDgxM2ZlODU4
ZDRkMzg2NTY0N2Q2OGZhMWFjYjdiYzBhZTEuLjA2NWZkMTNlYWExMmY1YmZlY2E1OGIyZThhZDI0
MGY5MTVlN2RiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMzEsNiArMzEsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKEpTQ2VsbCk7CisKK3ZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsKK30KKwogYm9vbCBKU0NlbGw6Omdl
dFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5nVmFsdWUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpc1N0cmluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApp
bmRleCA3NmNlZjA0NWE2OTE5OTI1YzBkNzc4YjNmODM3ZTZjMmQ2OGY3NDdjLi5jNzU1YTYwM2Qy
Njc2ODEwMjljNWQwMWY1YTM1ZDFiZjdhZDc2NDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaApAQCAtNjUsMTUgKzY1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBlbnVtIENyZWF0aW5nRWFybHlDZWxsVGFnIHsgQ3JlYXRpbmdFYXJseUNlbGwgfTsKICAgICAg
ICAgSlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKTsKIAotICAgICAgICBlbnVtIFZQdHJTdGVh
bGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9OwotICAgICAgICBleHBsaWNpdCBKU0Nl
bGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQotCiAgICAgcHVibGljOgogICAgICAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbikgeyBy
ZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0gLy8gVXNlZCBmb3IgaW5pdGlhbGl6YXRp
b24gYWZ0ZXIgR0MgYWxsb2NhdGlvbi4KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgSlNDZWxs
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsg
Ly8gSW52b2tlZCBieSBHQyBmaW5hbGl6YXRpb24uCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBl
LgpAQCAtMTA4LDYgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIE9iamVj
dCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogdmFsaWRhdGVkQ2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhv
ZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwpAQCAtMTE3
LDggKzExNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU09iamVjdCog
dG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogCi0gICAgICAgIHZvaWQqIHZwdHIo
KSBjb25zdCB7IEFTU0VSVCghaXNaYXBwZWQoKSk7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiBjb25zdCo+KHRoaXMpOyB9Ci0gICAgICAgIHZvaWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7
ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyBBU1NFUlQoIWlzWmFwcGVk
KCkpOyB9CiAgICAgICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Qq
Kj4odGhpcykgPSAwOyB9CiAgICAgICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAh
KnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9CiAKQEAgLTEzMyw2
ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSk7CiAgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX2NsYXNzSW5mbyk7CisgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQqIHN0cnVjdHVyZUFkZHJlc3MoKQogICAgICAg
ICB7CkBAIC0xNjYsMTMgKzE2Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwotICAgIAotICAgIGlubGluZSBKU0NlbGw6
OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgICAgICA6IG1fc3RydWN0dXJlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSkKLSAgICB7
Ci0gICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFn
KQogICAgIHsKQEAgLTE4OSwyNSArMTg2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
U1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCi0gICAgewotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQotICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKLSAg
ICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwotICAgICAgICBp
ZiAoc3RydWN0dXJlKQotI2VuZGlmCi0gICAgICAgICAgICBtX3N0cnVjdHVyZS5zZXRFYXJseVZh
bHVlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSk7Ci0gICAgICAgIC8vIFZlcnkgZmlyc3Qg
c2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KLSAgICAgICAg
QVNTRVJUKG1fc3RydWN0dXJlIHx8ICFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIEpTQ2VsbDo6fkpTQ2VsbCgpCisgICAgaW5saW5lIFN0cnVjdHVy
ZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3Ry
dWN0dXJlKCkgY29uc3QKKyAgICBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNz
SW5mbygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiBtX2NsYXNzSW5mbzsKICAgICB9CiAKICAgICBpbmxpbmUgdm9pZCBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMDgxMmYy
MWMyYTIxM2E4YmYxYzQ5YmQ3NjBkNjM0MTNjZThmNjgxMy4uNGUwNTUzNTJkZDVmZjJiMjdiNzkx
YmM2MzQ0NWQwOTEzMjgyNjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTczLDExICs3Myw2IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGlu
CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1KU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZQdHJT
dGVhbGluZ0hhY2tUeXBlKQotICAgIDogQmFzZShWUHRyU3RlYWxpbmdIYWNrKQotewotfQotCiBK
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKCkKQEAgLTExMywxNCArMTA4
LDExIEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25OYW1l
T2Zmc2V0KCksIGV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsKIH0KIAotSlNGdW5jdGlvbjo6fkpT
RnVuY3Rpb24oKQordm9pZCBKU0Z1bmN0aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAg
ICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIpOwotfQotCi12
b2lkIEpTRnVuY3Rpb246OnZ0YWJsZUFuY2hvcigpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJX
ZSBuZWVkIHNvbWV0aGluZyBoZXJlIHRoYXQgVmlzdWFsIFN0dWRpbyBjYW4ndCBvcHRpbWl6ZSBh
d2F5LlxuIik7CisgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oY2VsbCk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNz
T2YoJkpTRnVuY3Rpb246OnNfaW5mbykpOworICAgIHRoaXNPYmplY3QtPkpTRnVuY3Rpb246On5K
U0Z1bmN0aW9uKCk7CiB9CiAKIHZvaWQgY3JlYXRlRGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCkBAIC0xMzgsNyArMTMwLDcgQEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0
aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBkaXNwbGF5
TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCi0gICAgaWYgKGRpc3BsYXlOYW1lICYm
IGlzSlNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZGlzcGxheU5hbWUpKQorICAgIGlmIChk
aXNwbGF5TmFtZSAmJiBpc0pTU3RyaW5nKGRpc3BsYXlOYW1lKSkKICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKGRpc3BsYXlOYW1lKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAKICAgICByZXR1cm4gVVN0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4
IGI3NTMzMmE1NzQwMTQyNjAzYjlkZGE5YmQ3ZTRmYTE2NjczNjJhNTMuLjk4OGFlMTIxM2U1YjU5
Zjg4NWJjMDdmOTc0ODM1ZDIzZTNmNzQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBj
bGFzcyBTb3VyY2VDb2RlOwotICAgIGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZTsKICAgICBuYW1l
c3BhY2UgREZHIHsKICAgICBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKICAgICBjbGFzcyBKSVRDb21w
aWxlcjsKQEAgLTY1LDggKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgfkpTRnVu
Y3Rpb24oKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOyAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgb25jZSBvcHRpbWl6YXRpb25zIG5vIGxvbmdlciByZWx5IG9uIHRlc3Rpbmcg
dnRhYmxlcworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAg
IGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcg
ZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDQsOCArMTQyLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0
ZWFsaW5nSGFja1R5cGUpOwotCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggYTUzNWZjMjQ3ZGIyODQ4NjFiZTkz
ZDhiYWE2MWFmN2Q3NDg4MzAzZS4uMjJlNzY5M2RjZmI2YzEwMzljMDc0Y2RmNjdhMTg5MjE4ZjUy
MmRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCkBAIC0xMDksMTIgKzEwOSw2IEBAIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwUHJv
dG90eXBlVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHN0cmluZ1RhYmxlOwogZXh0ZXJu
IGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOwogCi12b2lkKiBKU0dsb2Jh
bERhdGE6OmpzRmluYWxPYmplY3RWUHRyOwotdm9pZCogSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0
cjsKLXZvaWQqIEpTR2xvYmFsRGF0YTo6anNCeXRlQXJyYXlWUHRyOwotdm9pZCogSlNHbG9iYWxE
YXRhOjpqc1N0cmluZ1ZQdHI7Ci12b2lkKiBKU0dsb2JhbERhdGE6OmpzRnVuY3Rpb25WUHRyOwot
CiAjaWYgQ09NUElMRVIoR0NDKQogLy8gV29yayBhcm91bmQgZm9yIGdjYyB0cnlpbmcgdG8gY29h
bGVzY2Ugb3VyIHJlYWRzIG9mIHRoZSB2YXJpb3VzIGNlbGwgdnB0cnMKICNkZWZpbmUgQ0xPQkJF
Ul9NRU1PUlkoKSBkbyB7IFwKQEAgLTEyNCw1MiArMTE4LDYgQEAgdm9pZCogSlNHbG9iYWxEYXRh
Ojpqc0Z1bmN0aW9uVlB0cjsKICNkZWZpbmUgQ0xPQkJFUl9NRU1PUlkoKSBkbyB7IH0gd2hpbGUg
KGZhbHNlKQogI2VuZGlmCiAKLXZvaWQgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCkKLXsKLSAg
ICAvLyBFbm91Z2ggc3RvcmFnZSB0byBmaXQgYSBKU0FycmF5LCBKU0J5dGVBcnJheSwgSlNTdHJp
bmcsIG9yIEpTRnVuY3Rpb24uCi0gICAgLy8gQ09NUElMRV9BU1NFUlRTIGJlbG93IGNoZWNrIHRo
YXQgdGhpcyBpcyB0cnVlLgotICAgIGNoYXIgc3RvcmFnZVs2NF07Ci0KLSAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoSlNGaW5hbE9iamVjdCkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNG
aW5hbE9iamVjdF9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzRmlu
YWxPYmplY3QgPSBuZXcgKHN0b3JhZ2UpIEpTRmluYWxPYmplY3QoSlNGaW5hbE9iamVjdDo6VlB0
clN0ZWFsaW5nSGFjayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6
OmpzRmluYWxPYmplY3RWUHRyID0ganNGaW5hbE9iamVjdC0+dnB0cigpOwotCi0gICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKEpTQXJyYXkpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTQXJy
YXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAgSlNDZWxsKiBqc0FycmF5ID0gbmV3
IChzdG9yYWdlKSBKU0FycmF5KEpTQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwotICAgIENMT0JC
RVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0ciA9IGpzQXJyYXktPnZw
dHIoKTsKLQotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0J5dGVBcnJheSkgPD0gc2l6ZW9m
KHN0b3JhZ2UpLCBzaXplb2ZfSlNCeXRlQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7
Ci0gICAgSlNDZWxsKiBqc0J5dGVBcnJheSA9IG5ldyAoc3RvcmFnZSkgSlNCeXRlQXJyYXkoSlNC
eXRlQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwotICAgIENMT0JCRVJfTUVNT1JZKCk7Ci0gICAg
SlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHIgPSBqc0J5dGVBcnJheS0+dnB0cigpOwotCi0g
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTU3RyaW5nKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNp
emVvZl9KU1N0cmluZ19tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpz
U3RyaW5nID0gbmV3IChzdG9yYWdlKSBKU1N0cmluZyhKU1N0cmluZzo6VlB0clN0ZWFsaW5nSGFj
ayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6OmpzU3RyaW5nVlB0
ciA9IGpzU3RyaW5nLT52cHRyKCk7Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNGdW5j
dGlvbikgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNGdW5jdGlvbl9tdXN0X2JlX2xlc3Nf
dGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzRnVuY3Rpb24gPSBuZXcgKHN0b3JhZ2UpIEpT
RnVuY3Rpb24oSlNDZWxsOjpWUHRyU3RlYWxpbmdIYWNrKTsKLSAgICBDTE9CQkVSX01FTU9SWSgp
OwotICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIgPSBqc0Z1bmN0aW9uLT52cHRyKCk7
Ci0KLSAgICAvLyBVbnRpbCB3ZSBmdWxseSByZW1vdmUgb3VyIHJlbGlhbmNlIG9uIHZwdHJzLCB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5Ym9keSB0aGF0IAotICAgIC8vIHdlIHRoaW5r
IGhhcyBhIHVuaXF1ZSB2aXJ0dWFsIHBvaW50ZXIgYWN0dWFsbHkgZG9lcy4KLSAgICBpZiAoanNG
aW5hbE9iamVjdFZQdHIgPT0ganNBcnJheVZQdHIKLSAgICAgICAgfHwganNGaW5hbE9iamVjdFZQ
dHIgPT0ganNCeXRlQXJyYXlWUHRyCi0gICAgICAgIHx8IGpzRmluYWxPYmplY3RWUHRyID09IGpz
U3RyaW5nVlB0cgotICAgICAgICB8fCBqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0Z1bmN0aW9uVlB0
cgotICAgICAgICB8fCBqc0FycmF5VlB0ciA9PSBqc0J5dGVBcnJheVZQdHIKLSAgICAgICAgfHwg
anNBcnJheVZQdHIgPT0ganNTdHJpbmdWUHRyCi0gICAgICAgIHx8IGpzQXJyYXlWUHRyID09IGpz
RnVuY3Rpb25WUHRyCi0gICAgICAgIHx8IGpzQnl0ZUFycmF5VlB0ciA9PSBqc1N0cmluZ1ZQdHIK
LSAgICAgICAgfHwganNCeXRlQXJyYXlWUHRyID09IGpzRnVuY3Rpb25WUHRyCi0gICAgICAgIHx8
IGpzU3RyaW5nVlB0ciA9PSBqc0Z1bmN0aW9uVlB0cikKLSAgICAgICAgQ1JBU0goKTsKLX0KLQog
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUs
IFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQogICAg
IDogZ2xvYmFsRGF0YVR5cGUoZ2xvYmFsRGF0YVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDEzOWRk
NDI1MWQyZjIwNDRhYWZiMDg2ZjdjYmI0ZTU4YWQxYjlmOTAuLjE2MTlmOTI5NzBlZDc3OWJkYmY0
YjZjODJhZGRkYmMwMWRlNDdjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCkBAIC0xMDUsMTggKzEwNSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIHN0cnVjdCBUeXBlZEFycmF5RGVzY3JpcHRvciB7CiAgICAgICAgIFR5cGVkQXJyYXlEZXNj
cmlwdG9yKCkKLSAgICAgICAgICAgIDogbV92cHRyKDApCisgICAgICAgICAgICA6IG1fY2xhc3NJ
bmZvKDApCiAgICAgICAgICAgICAsIG1fc3RvcmFnZU9mZnNldCgwKQogICAgICAgICAgICAgLCBt
X2xlbmd0aE9mZnNldCgwKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgVHlwZWRBcnJh
eURlc2NyaXB0b3Iodm9pZCogdnB0ciwgc2l6ZV90IHN0b3JhZ2VPZmZzZXQsIHNpemVfdCBsZW5n
dGhPZmZzZXQpCi0gICAgICAgICAgICA6IG1fdnB0cih2cHRyKQorICAgICAgICBUeXBlZEFycmF5
RGVzY3JpcHRvcihjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgc2l6ZV90IHN0b3JhZ2VPZmZz
ZXQsIHNpemVfdCBsZW5ndGhPZmZzZXQpCisgICAgICAgICAgICA6IG1fY2xhc3NJbmZvKGNsYXNz
SW5mbykKICAgICAgICAgICAgICwgbV9zdG9yYWdlT2Zmc2V0KHN0b3JhZ2VPZmZzZXQpCiAgICAg
ICAgICAgICAsIG1fbGVuZ3RoT2Zmc2V0KGxlbmd0aE9mZnNldCkKICAgICAgICAgewogICAgICAg
ICB9Ci0gICAgICAgIHZvaWQqIG1fdnB0cjsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2Ns
YXNzSW5mbzsKICAgICAgICAgc2l6ZV90IG1fc3RvcmFnZU9mZnNldDsKICAgICAgICAgc2l6ZV90
IG1fbGVuZ3RoT2Zmc2V0OwogICAgIH07CkBAIC0xOTMsMTMgKzE5Myw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdFeHBTdHJ1Y3R1cmU7CiAgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0dXJlOwogCi0gICAgICAgIHN0
YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9p
ZCoganNGaW5hbE9iamVjdFZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQq
IGpzQXJyYXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0J5dGVB
cnJheVZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzU3RyaW5nVlB0
cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNGdW5jdGlvblZQdHI7Ci0K
ICAgICAgICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENvbW1v
bklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgICAgICBjb25zdCBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUgc3VwcG9zZWQgdG8gYmUgYWxsb2NhdGVk
IG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1lbnRzIHByb3Blcmx5IG1hcmtlZCwgd2hp
Y2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhpcyBsaXN0IGhhcyBub3RoaW5nIHRvIG1h
cmsuCkBAIC0zNDAsNyArMzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIHJlZ2lzdGVy
VHlwZWRBcnJheUZ1bmN0aW9uKHR5cGUsIGNhcGl0YWxpemVkVHlwZSkgXAogICAgICAgICB2b2lk
IHJlZ2lzdGVyVHlwZWRBcnJheURlc2NyaXB0b3IoY29uc3QgY2FwaXRhbGl6ZWRUeXBlIyNBcnJh
eSosIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBcCiAgICAgICAgIHsg
XAotICAgICAgICAgICAgQVNTRVJUKCFtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fdnB0ciB8
fCBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fdnB0ciA9PSBkZXNjcmlwdG9yLm1fdnB0cik7
IFwKKyAgICAgICAgICAgIEFTU0VSVCghbV8jI3R5cGUjI0FycmF5RGVzY3JpcHRvci5tX2NsYXNz
SW5mbyB8fCBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fY2xhc3NJbmZvID09IGRlc2NyaXB0
b3IubV9jbGFzc0luZm8pOyBcCiAgICAgICAgICAgICBtXyMjdHlwZSMjQXJyYXlEZXNjcmlwdG9y
ID0gZGVzY3JpcHRvcjsgXAogICAgICAgICB9IFwKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURl
c2NyaXB0b3ImIHR5cGUjI0FycmF5RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fIyN0eXBl
IyNBcnJheURlc2NyaXB0b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNDI5ODVjMTRmYmIyYTY0MThkNmQ1M2E3MzgyOTFj
MTM4MTY4ZGM5Li40MjBiYzg5YzFiZGIyOGI2OGRmZmQxN2M4MWZiNzg0NGZlN2U0YTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMjIsNiArMTIyLDExIEBAIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogICAg
IH0KIH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9i
YWxPYmplY3QoKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhp
c1ZhbHVlKQogewogICAgIEFTU0VSVChKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggM2Y5M2NkOGIxODEwMTMzOGM1MmNhY2M4NWEzYWQzYTAwM2MyYzdkMS4uNzgyZTNhM2Mx
M2I0MzI1NGY5NDVmYTY5NWNiMjhkMWE5YzA3MGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xOTMsNyArMTkzLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+SlNH
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgfkpTR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcAppbmRleCA4NWJmYjdhMzg2NjY0OTMzNjk3ZmZjNjcy
NWJjY2E1Y2U1MDM5Y2E0Li44YjJhN2ExZWY1MWUyNGU3MTg2ZTc2MDBmNGJmMTU2YWU1MjA1ZjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTR2xvYmFsVGhpcyk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0ds
b2JhbFRoaXMpOwogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxUaGlzOjpzX2luZm8gPSB7ICJK
U0dsb2JhbFRoaXMiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
R2xvYmFsVGhpcykgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcAppbmRleCA5MWY5MGQ2MjQwMTk4OWQ4ODdkYjA2ZmUwMjllNWY3NWEyZjM0
MjI2Li42ODI0MDAyOTI3ZGU5MGE4OTNiNDk5MjFhZDQ5NjUwMzJjMTcxYjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNO
b3RBbk9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU05vdEFuT2JqZWN0
KTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTTm90QW5PYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOb3RBbk9iamVjdCkg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRl
eCBlYTRjMWFkNjY3YTljYTU3ZjU1NWM2MDQ0YTEzM2M0NmFmNzYyZTM0Li4wNWM2YzI5NTM1ZWYy
NWMzZGZiYTA1MjgzNGIxZTdlOGJkYjVmNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDMsNiArNDMsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPTk9iamVjdCk7CitBU1NFUlRfSEFTX1RS
SVZJQUxfREVTVFJVQ1RPUihKU09OT2JqZWN0KTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUq
KTsKQEAgLTQ5NSw3ICs0OTYsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5l
eHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZpZXIsIFVTdHJpbmdCdQogICAgIC8vIEZp
cnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1faW5kZXgpIHsKICAgICAg
ICAgaWYgKG1faXNBcnJheSkgewotICAgICAgICAgICAgbV9pc0pTQXJyYXkgPSBpc0pTQXJyYXko
JmV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgbV9pc0pT
QXJyYXkgPSBpc0pTQXJyYXkobV9vYmplY3QuZ2V0KCkpOwogICAgICAgICAgICAgbV9zaXplID0g
bV9vYmplY3QtPmdldChleGVjLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC02NjksNyArNjcwLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUg
V2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgIGFycmF5U3RhcnRT
dGF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlz
SlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGluVmFsdWUpKSB8fCBhc09i
amVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2JqZWN0KGluVmFs
dWUpLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9i
amVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vy
c2lvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobV9leGVjLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CiAKQEAgLTY5NCw3ICs2OTUsNyBAQCBORVZF
Ul9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAg
ICAgICAgICAgICAgICBpbmRleFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc0pTQXJy
YXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkgJiYgYXJyYXktPmNhbkdldEluZGV4KGlu
ZGV4KSkKKyAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGFycmF5KSAmJiBhcnJheS0+Y2Fu
R2V0SW5kZXgoaW5kZXgpKQogICAgICAgICAgICAgICAgICAgICBpblZhbHVlID0gYXJyYXktPmdl
dEluZGV4KGluZGV4KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3Q7CkBAIC03MTcsNyArNzE4LDcgQEAgTkVWRVJfSU5MSU5FIEpT
VmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBp
ZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAgICAgICBhcnJh
eS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGFycmF5LCBtX2V4ZWMsIGlu
ZGV4U3RhY2subGFzdCgpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KSAmJiBhcnJh
eS0+Y2FuU2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0KCkpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNKU0FycmF5KGFycmF5KSAmJiBhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xv
YmFsRGF0YSgpLCBpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KGFycmF5LCBtX2V4ZWMsIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJl
ZFZhbHVlKTsKQEAgLTczMCw3ICs3MzEsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6
OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgb2JqZWN0U3RhcnRTdGF0ZToK
ICAgICAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgICAgIEFT
U0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0Fy
cmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoaW5WYWx1ZSkpICYmICFhc09iamVj
dChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpOworICAgICAgICAgICAgICAg
IEFTU0VSVCghaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUpKSAmJiAhYXNPYmplY3QoaW5WYWx1
ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICAgICAgICAgICAgICBpZiAob2Jq
ZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJz
aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihtX2V4ZWMsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKIApAQCAtNzk3LDcgKzc5OCw3IEBAIE5FVkVS
X0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdCkgfHwgb2JqZWN0LT5pbmhl
cml0cygmSlNBcnJheTo6c19pbmZvKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KG9i
amVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkKICAgICAgICAgICAg
ICAgICAgICAgZ290byBhcnJheVN0YXJ0U3RhdGU7CiAgICAgICAgICAgICAgICAgZ290byBvYmpl
Y3RTdGFydFN0YXRlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKaW5kZXggMTRmMDkzNTk2NzZjNzVlNzNhZTU1YjVjYTJhMWYyMzMyNDRiMzJm
Yi4uOWNjMjk2MTdhZTJhMmU5MzM5NTg0ZTAyNWFlODQwMjJiMmUwMWZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNDYsMTUgKzQ2LDIyIEBAIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPYmplY3QpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU05vbkZpbmFsT2JqZWN0KTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGaW5h
bE9iamVjdCk7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTT2JqZWN0KTsKKwog
Y29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yID0gIkF0dGVt
cHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIjsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAwLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTT2JqZWN0KSB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNGaW5hbE9iamVjdDo6c19pbmZv
ID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0ZpbmFsT2JqZWN0KSB9OwogCi12b2lkIEpTRmluYWxPYmplY3Q6OnZ0YWJsZUFuY2hvcigpCit2
b2lkIEpTRmluYWxPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxK
U0ZpbmFsT2JqZWN0Kj4oY2VsbCktPkpTRmluYWxPYmplY3Q6On5KU0ZpbmFsT2JqZWN0KCk7Cit9
CisKK3ZvaWQgSlNOb25GaW5hbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7Ci0gICAg
cHJpbnRmKCJTb21ldGhpbmcgVmlzdWFsIFN0dWRpbyBjYW4ndCBvcHRpbWl6ZSBhd2F5LlxuIik7
CisgICAganNDYXN0PEpTTm9uRmluYWxPYmplY3QqPihjZWxsKS0+SlNOb25GaW5hbE9iamVjdDo6
fkpTTm9uRmluYWxPYmplY3QoKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCkBA
IC04MSw4ICs4OCw5IEBAIHZvaWQgSlNPYmplY3Q6OmZpbmFsaXplKEpTQ2VsbCogY2VsbCkKICAg
ICBkZWxldGUgW10ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCktPm1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpOwogfQogCi12b2lkIEpTT2JqZWN0Ojp2dGFibGVBbmNob3IoKQordm9pZCBKU09iamVjdDo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCktPkpT
T2JqZWN0Ojp+SlNPYmplY3QoKTsKIH0KIAogdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZjU2OGQ0MmE0NmYyMThjZmE0ZThiY2U4MjNhMjlkYjk3
YTRjNDZlNi4uMzYzZWMzMDYxM2U4Y2Y5Mjc2ZTA4ZjdhM2Y4ZjgxMTYzOGFmMThkZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC04MCw3ICs4MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9yKCk7CisgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC0yNDMsNiArMjQzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6
aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGlubGluZVN0b3JhZ2UsIHN0YXRpY19jYXN0PHZvaWQqPihpbmxpbmVTdG9yYWdl
KSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyArIDEpKTsKICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkp
OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yNTUsMTEgKzI1Niw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFs
T2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxp
a2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICBKU09iamVjdChKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7Ci0g
ICAgICAgIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSkKLSAgICAgICAgICAgIDogSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2spCi0gICAg
ICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGlubGluZVN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVy
OjpVbmNoZWNrZWQpCi0gICAgICAgIHsKLSAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNv
bWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCkBAIC0zMTksMTIgKzMxNSw5
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+
PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgICAg
ICAgICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBtX2lubGluZVN0b3JhZ2UpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotICAgIAogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQog
ICAgICAgICB7CkBAIC0zMzUsNiArMzI4LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG1faW5saW5lU3RvcmFn
ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNOb25GaW5hbE9iamVj
dCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7CiAgICAgICAgICAgICBBU1NF
UlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNOb25G
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKGNs
YXNzSW5mbygpKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTM0OSwxMSArMzQzLDYg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49
IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
SlNPYmplY3QgQmFzZTsKIAotICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KFZQdHJTdGVh
bGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBt
X2lubGluZVN0b3JhZ2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAg
c3RhdGljIEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9i
amVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBK
U0ZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKQEAgLTM3NCwyMSAr
MzYzLDMyIEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhLCBtX2lubGluZVN0b3JhZ2UpOwogICAgICAgICAgICAgQVNT
RVJUKCEoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkgJSBz
aXplb2YoZG91YmxlKSkpOwogICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNh
cGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIAor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2Jq
ZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CiAgICAgfTsKIAoraW5saW5lIGJvb2wgaXNKU0Zp
bmFsT2JqZWN0KEpTQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkg
PT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbzsKK30KKworaW5saW5lIGJvb2wgaXNKU0ZpbmFsT2Jq
ZWN0KEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmlzQ2VsbCgpICYmIGlzSlNG
aW5hbE9iamVjdCh2YWx1ZS5hc0NlbGwoKSk7Cit9CisKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpCiB7CiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihK
U0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpID09IE9CSkVDVF9PRkZTRVRPRihKU05vbkZp
bmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggZjQzMTA0
MjlhNzdiNjYxODBkNDNlZGJhZWEzN2I4ZDY0NjBmOGE1Ny4uNzIwN2E0YzVjY2NkYmRhMmE3NTA0
NTUzMWU5NDliZTFlMDRmZDllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTgxLDYgKzgxLDExIEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3I7CiB9CiAKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit7CisgICAganNDYXN0PEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqPihjZWxsKS0+SlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKTsKK30KKwogSlNWYWx1
ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlmaWVyID0gbV9qc1N0cmluZ3Nb
aV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggOTdhNTAzMjZiZGM5ZWNjNGI5ODI0ZTJmNTJjZTZj
MjA2MGI1NjRkMi4uY2UyZTQ0ZTgxMWIzYzY0YjI0NWY4OTE1MDg2MDBjZGY3YTQxNjA2MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaApAQCAtNTIsNyArNTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEpOwog
ICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAg
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgCiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiksICZzX2luZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCBkOTBjNjhjODAxYjYzZTFlOTk3NjU2
ODY0Njc0OGQ3NWNmYjA5NGQ3Li4zMDg0ZjNmMjk2NjU1MTA5NTU1YzU1MjI1OWVjZDU0ODNhZDhh
YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRp
Y1Njb3BlT2JqZWN0LmNwcApAQCAtMzQsNiArMzQsMTEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTU3RhdGljU2Nv
cGVPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNTdGF0aWNTY29wZU9iamVjdCkgfTsKIAordm9pZCBKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNTdGF0aWNT
Y29wZU9iamVjdCo+KGNlbGwpLT5KU1N0YXRpY1Njb3BlT2JqZWN0Ojp+SlNTdGF0aWNTY29wZU9i
amVjdCgpOworfQorCiB2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU1N0YXRpY1Njb3BlT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
aAppbmRleCAyM2EzYWNhZDc4Y2VlNGU3NjA3OWU4OWUyYWE0NWYwNTVmZDUyZmZmLi5kZTBiODE2
MjE3ODk3OWU2MDEwM2FiMzIyNmViMWRiYTAzMjQwYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCkBAIC02Nyw3ICs2Nyw5
IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUuZ2V0
KCksICZtX3N5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVnaXN0
ZXJTdG9yZSArIDEpKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgICAgICBTeW1ib2xUYWJsZSBtX3N5
bWJvbFRhYmxlOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZWdpc3RlclN0b3Jl
OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5k
ZXggMGU2YTQ4YTA3YWY5ZTNiOWI3M2YyM2Q0YTgyNGQ5ZWFmZmEwODdkZS4uNjJjYzU1Y2ZjYzAx
ODNiNWUzMDM4MWE0YzExNGM3ZjY0ZmQwYzBiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcApAQCAtNDUsOSArNDUsMTAgQEAgdm9pZCBKU1N0cmluZzo6Um9w
ZUJ1aWxkZXI6OmV4cGFuZCgpCiAgICAgYXBwZW5kKGpzU3RyaW5nKTsKIH0KIAotSlNTdHJpbmc6
On5KU1N0cmluZygpCit2b2lkIEpTU3RyaW5nOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAg
ICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRyKTsKKyAgICBKU1N0
cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOworICAgIHRoaXNPYmpl
Y3QtPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKIH0KIAogdm9pZCBKU1N0cmluZzo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggN2NmODM4MjE5YTViYTUzZjE3ZmFiZDg5MGRk
ZTJiYzJlMmQyMDJjNC4uZDUxYTIzZmYyODM2YzlkNzY5YTJlNzVjMWI3YTIxZTRmMzZkMjVjMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC02OSw2ICs2OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwogICAgICAgICBjbGFzcyBSb3Bl
QnVpbGRlciB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIFJvcGVCdWlsZGVyKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTE5Nyw4ICsxOTksNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIH5KU1N0cmluZygpOwotCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQpAQCAt
MjQzLDExICsyNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgSlNTdHJpbmcoVlB0clN0ZWFsaW5nSGFja1R5cGUpIAotICAgICAgICAgICAgOiBKU0NlbGwo
VlB0clN0ZWFsaW5nSGFjaykKLSAgICAgICAgewotICAgICAgICB9Ci0KICAgICAgICAgdm9pZCBy
ZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNs
b3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2Uo
VUNoYXIqKSBjb25zdDsKQEAgLTI3OSwxNiArMjc0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7CiAKLSAgICAvLyBXaGVuIGFuIG9iamVjdCBp
cyBjcmVhdGVkIGZyb20gYSBkaWZmZXJlbnQgRExMLCBNU1ZDIGNoYW5nZXMgdnB0ciB0byBhICJs
b2NhbCIgb25lIHJpZ2h0IGFmdGVyIGludm9raW5nIGEgY29uc3RydWN0b3IsCi0gICAgLy8gc2Vl
IDxodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvbWljcm9zb2Z0LnB1YmxpYy52Yy5sYW5n
dWFnZS9tc2cvNTVjZGNlZmVhZjc3MDIxMj4uCi0gICAgLy8gVGhpcyBicmVha3MgaXNKU1N0cmlu
ZygpLCBhbmQgd2UgZG9uJ3QgbmVlZCB0aGF0IGhhY2sgYW55d2F5LCBzbyB3ZSBjaGFuZ2UgdnB0
ciBiYWNrIHRvIHByaW1hcnkgb25lLgotICAgIC8vIFRoZSBiZWxvdyBmdW5jdGlvbiBtdXN0IGJl
IGNhbGxlZCBieSBhbnkgaW5saW5lIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBhIEpTU3RyaW5nIGNv
bnN0cnVjdG9yLgotI2lmIENPTVBJTEVSKE1TVkMpICYmICFkZWZpbmVkKEJVSUxESU5HX0phdmFT
Y3JpcHRDb3JlKQotICAgIGlubGluZSBKU1N0cmluZyogZml4dXBWUHRyKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgSlNTdHJpbmcqIHN0cmluZykgeyBzdHJpbmctPnNldFZQdHIoZ2xvYmFsRGF0
YS0+anNTdHJpbmdWUHRyKTsgcmV0dXJuIHN0cmluZzsgfQotI2Vsc2UKLSAgICBpbmxpbmUgSlNT
dHJpbmcqIGZpeHVwVlB0cihKU0dsb2JhbERhdGEqLCBKU1N0cmluZyogc3RyaW5nKSB7IHJldHVy
biBzdHJpbmc7IH0KLSNlbmRpZgotCiAgICAgaW5saW5lIEpTU3RyaW5nKiBhc1N0cmluZyhKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc1N0cmlu
ZygpKTsKQEAgLTMwNCw3ICsyODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAg
IGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgIHJldHVybiBn
bG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEs
IGMpOwotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVh
dGUoKmdsb2JhbERhdGEsIFVTdHJpbmcoJmMsIDEpLmltcGwoKSkpOworICAgICAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZygmYywgMSkuaW1wbCgpKTsKICAg
ICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0KQpAQCAtMzE0
LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBVQ2hhciBjID0gc1tvZmZzZXRd
OwogICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhn
bG9iYWxEYXRhLCBjKTsKLSAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0
cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9m
ZnNldCwgMSkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEs
IFN0cmluZ0ltcGw6OmNyZWF0ZShzLmltcGwoKSwgb2Zmc2V0LCAxKSk7CiAgICAgfQogCiAgICAg
aW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBjaGFyKiBzKQpAQCAtMzIyLDEzICszMDcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEFTU0VSVChzKTsKICAgICAgICAgQVNTRVJUKHNbMF0pOwogICAgICAgICBBU1NF
UlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6
OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZyhzKS5pbXBsKCkpKTsKKyAgICAgICAgcmV0dXJu
IEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmcocykuaW1wbCgpKTsKICAgICB9
CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBBU1NFUlQocy5s
ZW5ndGgoKSA+IDEpOwotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3Ry
aW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKSk7CisgICAgICAgIHJldHVybiBKU1N0
cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBzLmltcGwoKSk7CiAgICAgfQogCiAgICAgaW5saW5l
IEpTU3RyaW5nKiBKU1N0cmluZzo6Z2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
KQpAQCAtMzUwLDcgKzMzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGMg
PD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgICAgIHJldHVybiBnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJp
bmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3Ry
aW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUg
SlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzc2LDcgKzM2MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQog
ICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
aXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2Jh
bERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSkpOwor
ICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEs
IFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgfQog
CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpA
QCAtMzkxLDcgKzM3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGMgPD0g
bWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxE
YXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6
OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZShzLmlt
cGwoKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRl
SGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBv
ZmZzZXQsIGxlbmd0aCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0
cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCkBAIC00MDQs
MTIgKzM4OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChjIDw9IG1heFNp
bmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+
c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVh
dGVIYXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBzLmltcGwoKSkpOworICAgICAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIHMuaW1wbCgpKTsKICAg
ICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEs
IEpTU3RyaW5nOjpjcmVhdGVOdWxsKCpnbG9iYWxEYXRhKSk7CisgICAgICAgIHJldHVybiBKU1N0
cmluZzo6Y3JlYXRlTnVsbCgqZ2xvYmFsRGF0YSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTU3Ry
aW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4ganNFbXB0eVN0cmlu
ZygmZXhlYy0+Z2xvYmFsRGF0YSgpKTsgfQpAQCAtNDQ4LDcgKzQzMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgaXNK
U1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRy
OyB9CisgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXND
ZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gJkpTU3RyaW5nOjpzX2luZm87IH0K
IAogICAgIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuY3BwCmluZGV4IDlmMzhlYTk4NzJjNGY3MmIxMTgzYWQxYmU4Y2U0ZmZmYTgwMDU5
NzcuLjcwNmUzZGViYmMzY2Y2YjZmYTJiMWZmZTY5MzNmZDk1MDljZTJhMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCkBAIC0z
Nyw4ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU1ZhcmlhYmxlT2JqZWN0Ojp+SlNW
YXJpYWJsZU9iamVjdCgpCit2b2lkIEpTVmFyaWFibGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogeworICAgIGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY2VsbCktPkpTVmFyaWFibGVP
YmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCk7CiB9CiAKIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaAppbmRleCBlNDlmYjcxZGYyZWNiOWRmNzk2YjJlN2I4ZGVkOWU3
Njg0YWFkODMwLi44YTVjNWEwZjMxNGY5MmQ2MmQzZDVlNTczNjVlYWEzYjVmZGQ0YzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CiAKLSAgICAgICAg
dmlydHVhbCB+SlNWYXJpYWJsZU9iamVjdCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lk
IHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCBjYTViZDg3NWMzZDBh
NmNiZjVhODgyYjkxZTU2YTQ4OWNiOWQ3NWQyLi5mOGY1NzI3ZDgyY2Q2NzY5NjIyNjgxOGVlZTc5
MGQ5Y2Q0MmQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
V3JhcHBlck9iamVjdC5jcHAKQEAgLTI1LDEwICsyNSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBwZXJPYmplY3QpOwotCi1KU1dyYXBwZXJP
YmplY3Q6On5KU1dyYXBwZXJPYmplY3QoKQotewotfQorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoSlNXcmFwcGVyT2JqZWN0KTsKIAogdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5kZXggNzM3MTNjMGIz
NGM2NDI0MmE4NGYyYWVkZDE3ZDUxNTU5NmExMGU0Ni4uNjViNGJkYjdmNjFlMDAwMTExNTJlMWEw
ZDVhY2UxZWFiNzc3ZDk3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
Ci0gICAgICAgIHZpcnR1YWwgfkpTV3JhcHBlck9iamVjdCgpOwotICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRlcm5hbFZhbHVlOwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4
IDAwNjU1OWRkZGE0ODJhYmZjYTliZWQxYTBjMTQ1YTRhOTMwNjg3MmUuLjU4YjA5MTIyZDRhYzJk
ZWU3MmU1NmNjYWVlNDMyYjU1ZmQ0MDZjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC01OSw2ICs1OSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7CiAKIG5hbWVz
cGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihNYXRoT2JqZWN0KTsK
KwogY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmSlNOb25G
aW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om1hdGhUYWJsZSwgQ1JFQVRFX01FVEhP
RF9UQUJMRShNYXRoT2JqZWN0KSB9OwogCiAvKiBTb3VyY2UgZm9yIE1hdGhPYmplY3QubHV0LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZGRlOTI3ODQ4YWQ4ZTJlY2U4YzAwM2JlN2FkYmMxYWNjNGY0
ZmM2Ny4uYjZhZmY5MTZlNGRkNGI4YjEyMzk2NjQ2M2NkNTg2ODI3M2E4YjBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5m
byBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDA4NGM2M2YxN2U4ZDMxMGZjZjUzYzcxMzc1NmEx
YjhhZDdlNDdjMDIuLmU4NjNlODYzMDk4MjM4N2IyYTIzZWEyODE5ZjdiOGFkMGE4ZDVlNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTQyLDYgKzQyLDggQEAgc3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JN
aW5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE51bWJlckNvbnN0cnVj
dG9yKTsKKwogY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6bnVtYmVy
Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShOdW1iZXJDb25zdHJ1Y3Rvcikg
fTsKIAogLyogU291cmNlIGZvciBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKaW5kZXggYjc1MTA1M2ZiOTY2
YmRlODJjMGNkYWJlZTg0MTRiYzUwOWE4NWYyMS4uMWZlYTI1NDY0N2E0ZWQwMzgyNjY5MTc2NTU0
MjU4MGU5NGIzZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoTnVtYmVyT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVjdDo6
c19pbmZvID0geyAiTnVtYmVyIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKE51bWJlck9iamVjdCkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggM2JjYjliYjVkY2YzNDkx
OGM3MWZmNjYxOTU0Y2VhMmY5ZjYyNzVhNy4uNDYxMmI1NmQyYmE1NWU0Yzk4M2MyMzM2MmI5NjE1
YWY4MzQwM2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCkBAIC02OSw2ICs2OSw3IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIk51bWJlciIsICZOdW1iZXJPYmplY3Q6OnNfaW5mbywgMCwK
ICovCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyUHJvdG90eXBlKTsKK0FTU0VS
VF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE51bWJlclByb3RvdHlwZSk7CiAKIE51bWJlclByb3Rv
dHlwZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBOdW1iZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNTk1MmNlODA5Yzg3ZDJjMzgwNWFjMmI5N2NhNjZjMDY4N2RlYzM1MC4uNjVkMjhj
MThjMzMzYjNjMzgyYWFkMjA0OTFmOTk0MjdkNTQ2MWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtNTUsNiArNTUs
OCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cklzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKE9iamVjdENvbnN0cnVjdG9yKTsKKwogY29uc3QgQ2xhc3NJ
bmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1
bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShPYmplY3RDb25zdHJ1Y3RvcikgfTsKIAogLyogU291cmNlIGZvciBP
YmplY3RDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggYTFlNDk2NjM0NjZkMzQwZTVjZjIxMTY5MWYw
ODUyNGFlNTQyMmM5MS4uM2Y0ZGMxOWRiMmEyMmFlOTM4NTY1NDRkMTQ3Yzg0NjY3NTg5YjFiMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCkBAIC00NCw2ICs0NCw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoT2JqZWN0UHJvdG90eXBlKTsK
KwogY29uc3QgQ2xhc3NJbmZvIE9iamVjdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVU
YWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmplY3RQcm90b3R5cGUpIH07CiAKIC8qIFNvdXJj
ZSBmb3IgT2JqZWN0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKaW5kZXggOTdkYWUzZTA4YmY2MmMyOTRiOWI2ODY2Y2ZjYjc3YTM1Y2M4
NGRmNC4uY2EyMTc0ZmExZTcyMDc4OTMzYzM1M2IxNDc1ZjhhZTA5OTY2MGIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtNDcsNyArNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKChsZW5ndGgxICsgbGVuZ3RoMikgPCBsZW5ndGgx
KQogICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKIAotICAg
ICAgICByZXR1cm4gZml4dXBWUHRyKCZnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHMxLCBzMikpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZShnbG9iYWxE
YXRhLCBzMSwgczIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1Miwg
Y29uc3QgVVN0cmluZyYgdTMpCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpZiAoKGxlbmd0aDEgKyBsZW5ndGgyICsgbGVuZ3RoMykgPCBsZW5ndGgzKQogICAgICAg
ICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKIAotICAgICAgICByZXR1
cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCB1MSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUyKSwg
anNTdHJpbmcoZ2xvYmFsRGF0YSwgdTMpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3Jl
YXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEpLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCB1MiksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUzKSk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0
ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNvdW50KQpAQCAtMjMwLDggKzIzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPCB2Mi5hc051bWJlcigpOwogCi0gICAgICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKLSAg
ICAgICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdjEpICYmIGlzSlNTdHJpbmcoZ2xvYmFs
RGF0YSwgdjIpKQorICAgICAgICBpZiAoaXNKU1N0cmluZyh2MSkgJiYgaXNKU1N0cmluZyh2Mikp
CiAgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNT
dHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpOwogCiAgICAgICAgIGRvdWJsZSBuMTsKQEAgLTI2
NSw4ICsyNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkg
JiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpIDw9IHYy
LmFzTnVtYmVyKCk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2
MSkgJiYgaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2MikpCisgICAgICAgIGlmIChpc0pTU3RyaW5n
KHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkKICAgICAgICAgICAgIHJldHVybiAhKGFzU3RyaW5nKHYy
KS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFzU3RyaW5nKHYxKS0+dmFsdWUoY2FsbEZyYW1lKSk7CiAK
ICAgICAgICAgZG91YmxlIG4xOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKaW5kZXggMDVkZjMyYjE1MzYzYTdkMmIyMGZiOGVlNDc5NmExYTVmYjAwZDBlNy4uNTk0YjIy
NTkyMGQ5NDg0YTQxOTU4Y2NmYWVmM2IxYTg1MGJkOWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yNDgsMTEgKzI0OCwxMyBAQCB2b2lkIFJlZ0V4cDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICBtX251bVN1
YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOwogfQogCi1SZWdFeHA6On5SZWdF
eHAoKQordm9pZCBSZWdFeHA6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIFJlZ0V4cCog
dGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHAqPihjZWxsKTsKICNpZiBSRUdFWFBfRlVOQ19URVNU
X0RBVEFfR0VOCiAgICAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpLT5jbGVh
clJlZ0V4cCh0aGlzKTsKICNlbmRpZgorICAgIHRoaXNPYmplY3QtPlJlZ0V4cDo6flJlZ0V4cCgp
OwogfQogCiBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmcoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBm
bGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggYWEzYTYxZjQ2
ZjljMWEzNGY3MzExNmE4YWY0MWZjZTRjMDQ2NDA2ZS4uNjVlYjQ4NDk5OTJjYTVlNmUxODlmZTI1
NDJhZGM4YTc1ZmI5ZGRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgK
QEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKLSAgICAgICAgflJlZ0V4cCgpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIGJvb2wgZ2xv
YmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7IH0KICAgICAgICAgYm9v
bCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggMDNkMmZkMmMwZWVhYTA0NTgxYzU4ZDZlOTE2MWY0YTBmZTliMWY4OS4uYTI4
NzM3N2EyMmU5MmVlNmQwYWUxNWQyOTI0Yjc1OGQ3MmRlMzJiYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMTE1LDYg
KzExNSwxMSBAQCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAor
dm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganND
YXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oY2VsbCktPlJlZ0V4cENvbnN0cnVjdG9yOjp+UmVnRXhw
Q29uc3RydWN0b3IoKTsKK30KKwogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJy
YXkoRXhlY1N0YXRlKiBleGVjKQogICAgIDogSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkp
CiB7CkBAIC0xNDAsNiArMTQ1LDExIEBAIFJlZ0V4cE1hdGNoZXNBcnJheTo6flJlZ0V4cE1hdGNo
ZXNBcnJheSgpCiAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0
ZSo+KHN1YmNsYXNzRGF0YSgpKTsKIH0KIAordm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxs
KS0+UmVnRXhwTWF0Y2hlc0FycmF5Ojp+UmVnRXhwTWF0Y2hlc0FycmF5KCk7Cit9CisKIHZvaWQg
UmVnRXhwTWF0Y2hlc0FycmF5OjpmaWxsQXJyYXlJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkID0gc3RhdGljX2Nhc3Q8UmVnRXhwQ29u
c3RydWN0b3JQcml2YXRlKj4oc3ViY2xhc3NEYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXggNWY5MzBlYjg5NTdkMTVh
ZmM1YjAzYjM4MzE2MGRkYjUwOWE0Y2JlMy4uN2ZiODhkMmI0NDZhMmE0ZjE2ZTNmNWE3YTY4ODVj
NWY1ZGQ4YWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5oCkBAIC05OCw2ICs5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oCmluZGV4IDFjYzg5OGUyNTZkNTE2YTA0NTg2MmJjMDE1MTNiZTY3ZmE4ZWE4
NTkuLjFjMTE3YjBkODViNWM2OTY0ZjBmYjNjZTIzOTNlZjVmYmYwZGU5MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCkBAIC0z
Nyw3ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmVnRXhwLT5maW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGN0b3JQcml2YXRlKTsKICAgICAgICAgICAgIHJl
dHVybiByZWdFeHA7CiAgICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB+UmVnRXhwTWF0Y2hlc0Fy
cmF5KCk7CisgICAgICAgIH5SZWdFeHBNYXRjaGVzQXJyYXkoKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDcyMTNkYzI3YzE1NTc3Y2IyODViYjQyODA4
NzAzODM4NmJlZmM4NDMuLjQ1NTNmN2FkMGQ1MmNlOGYyZWRhYTIyOTdhMzA1N2UyYTI2NjdjYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApA
QCAtNzUsOCArNzUsOSBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwog
fQogCi1SZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3QoKQordm9pZCBSZWdFeHBPYmplY3Q6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxSZWdFeHBPYmplY3QqPihjZWxsKS0+
UmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2JqZWN0KCk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGExMTdmMzYyYzNl
MzNhODc5MTMyYTZjYTIyYjFiZWY4NWRhYzdmNTkuLmVlOThiNjYwMjNmODMwZjliNjRlZGYxZDY4
MzI1ZWYyZTQ1MzJkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5oCkBAIC00NCw4ICs0NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIG9iamVjdDsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgflJlZ0V4cE9iamVj
dCgpOwotCiAgICAgICAgIHZvaWQgc2V0UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UmVnRXhwKiByKSB7IGQtPnJlZ0V4cC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcik7IH0KICAgICAg
ICAgUmVnRXhwKiByZWdFeHAoKSBjb25zdCB7IHJldHVybiBkLT5yZWdFeHAuZ2V0KCk7IH0KIApA
QCAtNzksNiArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKaW5kZXggNzlmMmE3YTQ4NGE1MzAxMTUz
Zjg1MzdlM2E4ZDFlYTUzOTk1ZmI3Mi4uMDk5ZjdmZGU2OGJiYmM3NmI3N2Y0Mjk2ZjZlODc2YTFm
NzFmOGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5j
cHAKQEAgLTI5LDkgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVNjb3BlQ2hhaW5Ob2Rl
Ojp+U2NvcGVDaGFpbk5vZGUoKQotewotfQorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
U2NvcGVDaGFpbk5vZGUpOwogCiAjaWZuZGVmIE5ERUJVRwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggNDgzODVkMGNiZTFhNDg4YWU3OWNhYTZhYTMx
NTgxZDc0NjAwYzY4Zi4uZmRlNjkwZWI0ZDhkZDFiZjE5YzU3YTI3YmMzODE1YjVkYTQwN2M2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApAQCAtNDUsOCAr
NDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB+U2NvcGVDaGFpbk5vZGUoKTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRleCAyMTI4M2RiZDIyNDI1
YTIwNzgwYjMzYTFhMzFlNzdiMjgzYjI2ZmFkLi5mYmQ5ZDVmYmQ5N2NjMDNiYjRkNzZlYjIwY2Rh
NDliOGNkMjU3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihTdHJpY3RFdmFsQWN0aXZh
dGlvbik7CisKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6c19pbmZvID0g
eyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJp
Y3RFdmFsQWN0aXZhdGlvbikgfTsKIAogU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxB
Y3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA5NjU3MGIyYzA1YWQ5MWE5ZWJj
Y2U1OTkxNzViZjg4YjNlNGVhYTFjLi5kMmY3NWEwNjBiNTVjNGY3MWM2OWFmYjZmNTI1OGZlMjkw
ODU4MjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC00Niw2ICs0Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
CiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKK0FT
U0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ0NvbnN0cnVjdG9yKTsKIAogU3RyaW5n
Q29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCmluZGV4IDNlZWQyNjcyMzEzNDE0YjEzZGFmYjRmZDk2MjkyYTcyM2U4ZDZm
OGQuLjRhMjQ2OThmYjE2OWU0YTY1OTUwOGEyOGFhM2U3OWJjMWNjZjVlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5n
T2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ09iamVjdCk7CiAK
IGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZKU1dy
YXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJpbmdPYmpl
Y3QpIH07CiAKQEAgLTM0LDEwICszNSw2IEBAIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZv
aWQgU3RyaW5nT2JqZWN0Ojp2dGFibGVBbmNob3IoKQotewotfQotCiB2b2lkIFN0cmluZ09iamVj
dDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogc3Ry
aW5nKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBkNjVlY2M1NDMyYmEx
OTVkOWE2ZTQzODdlMmJmMDgxZTVkMjQwNDg5Li44MDZkMDdiM2Q5MjhlYjEwNTc2MTlhMzgyYWZi
YzllYzcxZDBhYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaApAQCAtMzAsOCArMzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIHZ0YWJsZUFuY2hvcigpOwotCiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDNk
ZTg5NTM0MjI2N2ZkNzlhZGNiNDFhYTIxNTY3NTZjNGVmYWQ2MzIuLjliZjE4ZGU2OWFlNmE2MWRi
ZDE2YTllM2RhNWY0ZjAzOGI1ZGQ5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNDUsNiArNDUsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV1RGOwogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
U3RyaW5nUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFN0cmluZ1By
b3RvdHlwZSk7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNmI0Y2EyYmZmYjRjOTYxOTY2
MDMxMGMyYWFhYzEwOTFkYjI3Njc3Ny4uZGRhOGM3M2U5MmRmNmQxMzQ4MDA5NGQyNmE1MjgzYzEx
OTdlMzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CkBAIC0yMTgsOCArMjE4LDkgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgICAgICBtX2dsb2JhbE9i
amVjdC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPm1fZ2xvYmFsT2JqZWN0LmdldCgp
KTsKIH0KIAotU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKK3ZvaWQgU3RydWN0dXJlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8U3RydWN0dXJlKj4oY2VsbCktPlN0cnVjdHVy
ZTo6flN0cnVjdHVyZSgpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCmluZGV4IGUzNzJiMjAyNjVmZWMwNDJjNDgwZTA5ZTM4N2E2YWY5MjM5
YjhjNGMuLjkyZTFiM2IzMzA5ODcyMmE2YzA4MWZhOWM4ZmJjYzVjZjk4MmQ5ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCi0gICAgICAgIH5TdHJ1Y3R1cmUo
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBU
aGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKICAgICAgICAgc2l6ZV90IGFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUp
OwpAQCAtMzM1LDE2ICszMzUsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQg
SlNDZWxsOjpzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpID09IHRoaXMtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CiAgICAgICAgIG1fc3RydWN0
dXJlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlubGlu
ZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKKyAgICBpbmxpbmUg
Y29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OnZhbGlkYXRlZENsYXNzSW5mbygpIGNvbnN0CiAgICAg
ewogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUu
dW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7CisgICAgICAgIEFTU0VSVChtX3N0cnVjdHVy
ZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKSA9PSBtX2NsYXNzSW5mbyk7CiAjZWxzZQot
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOworICAgICAgICBBU1NFUlQo
bV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fY2xhc3NJbmZvKTsKICNlbmRpZgorICAgICAg
ICByZXR1cm4gbV9jbGFzc0luZm87CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIE1h
cmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNDZWxsKiBjZWxsKQpAQCAtMzgwLDYgKzM4MiwyNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlu
bGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IG1fY2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
CisgICAgICAgICwgbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQorICAg
IHsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlD
ZWxsVGFnKQorICAgIHsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAgICAgQVNTRVJU
KGdsb2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CisgICAgICAgIGdsb2JhbERhdGEu
c2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZSkKKyNl
bmRpZgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0RWFybHlWYWx1ZShnbG9iYWxEYXRhLCB0
aGlzLCBzdHJ1Y3R1cmUpOworICAgICAgICBtX2NsYXNzSW5mbyA9IHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCk7CisgICAgICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhh
dmUgYSByZWFsIHN0cnVjdHVyZS4KKyAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICFnbG9i
YWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIFN0cnVjdHVyZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2EwODU2OTcwY2I0NGJlYWQwMWIwNGNkYjc5
Mjg1YzY1MmFhMTA2Zi4uYWZiMmQ5NTAxODg2N2Y5ZGI3ZjQ0MWYyOGM4OTNiMTBlMmE2MDFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cApAQCAtMzksOCArMzksOSBAQCBTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotU3RydWN0
dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCit2b2lkIFN0cnVjdHVyZUNoYWluOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8U3RydWN0dXJlQ2hhaW4qPihjZWxsKS0+U3Ry
dWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpOwogfQogCiB2b2lkIFN0cnVjdHVyZUNoYWlu
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCAyODFm
NjAyNGU0ZTZkNGM3OWJiMzU5YzBkMTdhY2M1MzE0MGE0NDEwLi4wMWE1OWJmMTk3MjExMWQxZDMz
ZmRiYTExMDQ0MTdiMDg0NDE1MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKLSAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7CisgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2Vy
dGlvbnMuaAppbmRleCBkNGY1ZDgwOTg1ZGI3YTkxNTY0Mjk4ODNmMDUzZjIxYTM3YjMyMjExLi4y
YjNkNzk0YTRkN2UwMjI3Y2VlMDg2MDVlN2ZkODYwZDdiNDQ5NWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzgzLDQgKzM4MywxMCBAQCB3aGlsZSAoMCkKICNk
ZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGNsYXNzSW5mbykgZG8geyAo
dm9pZClvYmplY3Q7ICh2b2lkKWNsYXNzSW5mbzsgfSB3aGlsZSAoMCkKICNlbmRpZgogCisjaWYg
Q09NUElMRVIoQ0xBTkcpCisjZGVmaW5lIEFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKGts
YXNzKSBDT01QSUxFX0FTU0VSVChfX2hhc190cml2aWFsX2Rlc3RydWN0b3Ioa2xhc3MpLCBrbGFz
cyMjX2hhc190cml2aWFsX2Rlc3RydWN0b3JfY2hlY2spCisjZWxzZQorI2RlZmluZSBBU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUihrbGFzcykKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX0Fz
c2VydGlvbnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmpl
Y3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4
IDhlYTVkMjk1MzBmZDY4MWMwZGY2MjJmNjA0MjQ3YjI1ZDUyZTQzNWIuLjY4MDBmZGY0NGFmZjEy
N2NlMDBlNjFiNTI0Mjg0NGI5MzAxNWM3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAKQEAgLTQ2LDYgKzQ2LDExIEBAIFVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0
SW1wKCkKICAgICAgICAgZkpTVXNlck9iamVjdC0+UmVsZWFzZSgpOwogfQogCit2b2lkIFVzZXJP
YmplY3RJbXA6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxVc2VyT2JqZWN0
SW1wKj4oY2VsbCktPlVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCk7Cit9CisKIENhbGxU
eXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNh
bGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VXNlck9i
amVjdEltcCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXgg
ZDY0OGE5NWJiNTIxOGM5ZjA5NDk3OGI4NjVjMmY4YzFkM2Q3NTdlZC4uNDlhNjUzZTBjMTMzMzNl
NWIzYjk4M2I4NWU2YzBjODlmM2I0OWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsK
ICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+VXNlck9iamVjdEltcCgpOworICAgIH5Vc2VyT2Jq
ZWN0SW1wKCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC01MywxMiArNTQsMTIgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHZpcnR1YWwg
SlNWYWx1ZSBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMpOworICAgIEpTVmFsdWUgY2Fs
bEFzRnVuY3Rpb24oRXhlY1N0YXRlKik7IC8vIFRPRE86IEZpZ3VyZSBvdXQgaG93IHRvIHJlLXZp
cnR1YWxpemUgdGhpcyB3aXRob3V0IGJyZWFraW5nIHRoZSBmYWN0IHRoYXQgd2UgZG9uJ3QgYWxs
b3cgdnB0cnMgaW4gdGhlIEpTQ2VsbCBoaWVyYXJjaHkuCiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUgcHJlZmVycmVkVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OworICAgIGJvb2wgdG9Cb29sZWFu
KEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBUT0RPOiBGaWd1cmUgb3V0IGhvdyB0byByZS12aXJ0dWFs
aXplIHRoaXMgd2l0aG91dCBicmVha2luZyB0aGUgZmFjdCB0aGF0IHdlIGRvbid0IGFsbG93IHZw
dHJzIGluIHRoZSBKU0NlbGwgaGllcmFyY2h5LgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI4
NGMzZDJmMDBlYTFjZGEyM2MyN2EwYzZmNzI1YmZkNzUxMzFlYTMuLmUxNzcyYmE5M2I0NmVjYTM1
NmQ4MWNmNWY4Yjk2YTQxZDVlMWYxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNjQsNyAr
MjY0LDcgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2UyN2NoZWNrSW50ZWdyaXR5QmVmb3Jl
T3BlbmluZ0V2CiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTVjbG9zZUV2CiBfX1pON1dlYkNv
cmUxMkljb25EYXRhYmFzZTlzZXRDbGllbnRFUE5TXzE4SWNvbkRhdGFiYXNlQ2xpZW50RQogX19a
TjdXZWJDb3JlMTJJY29uRGF0YWJhc2VDMUV2Ci1fX1pON1dlYkNvcmUxMkpTRE9NV3JhcHBlcjM0
dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUV2CitfX1pON1dlYkNvcmUxMkpTRE9N
V3JhcHBlcjZzX2luZm9FCiBfX1pON1dlYkNvcmUxMlBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVw
TWVudUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTJwYWdlUHJvcGVydHlFUE5T
XzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQ
TlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKQEAgLTEyNzYsNiArMTI3Niw3IEBAIF9fWk5LN1dl
YkNvcmUxNlZpc2libGVTZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJhbmdlRXYKIF9fWk5LN1dlYkNv
cmUxNlZpc2libGVTZWxlY3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1lbnRFdgogX19aTks3V2ViQ29y
ZTE2VmlzaWJsZVNlbGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRpdGFibGVFdgogX19aTks3V2Vi
Q29yZTE2VmlzaWJsZVNlbGVjdGlvbjVpc0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZUUKK19fWk5LN1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0MjJzY3JpcHRFeGVjdXRpb25D
b250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uMTNtYXRjaGVkTGVuZ3Ro
RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uNW1hdGNoRVJLTjNXVEY2U3RyaW5n
RWlQaQogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb245c2VhcmNoUmV2RVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTQ0MCw3ICsxNDQxLDYgQEAgX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUxMGZy
YW1lQ291bnRFdgogX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUyMWF1dG9yZWxlYXNlZFBhZ2VDb3Vu
dEV2CiBfX1pOSzdXZWJDb3JlOVRyZWVTY29wZTE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRv
bWljU3RyaW5nRQogX19aVFZON1dlYkNvcmUxMkNocm9tZUNsaWVudEUKLV9fWlRWTjdXZWJDb3Jl
MTJKU0RPTVdyYXBwZXJFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZUUKIF9fWlRW
TjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMThQbGF0Zm9ybVN0
cmF0ZWdpZXNFCkBAIC0xNzIzLDExICsxNzIzLDExIEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2Vu
ZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnRFaQogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1Mp
CiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhD
YWxsRGF0YUUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTJ2dGFibGVBbmNob3JFdgogX19aTjNK
U0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05T
XzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMThnZXRPd25Qcm9wZXJ0eVNs
b3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJv
cGVydHlTbG90RQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QyNGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18x
OFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKK19f
Wk4zSlNDMTNSdW50aW1lTWV0aG9kN2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzEzUnVu
dGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRVJOM1dURjZW
ZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCiBfX1pOM0pTQzhCaW5kaW5nczEwUm9v
dE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0
YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQpAQCAtMTc0MCwxNCArMTc0MCwxMyBAQCBfX1pO
M0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOEpT
T2JqZWN0RVBOU185RXhlY1N0YQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCitfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVO
M1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdEQyRXYKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlMTljcmVhdGVSdW50aW1l
T2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2VDMkVOM1dU
RjEwUGFzc1JlZlB0cklOUzBfMTBSb290T2JqZWN0RUVFCiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0
YW5jZUQyRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDdpc1ZhbGlkRVBTMF8KIF9fWk43
V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE2Y3JlYXRlUm9vdE9iamVjdEVQdgotX19aVFZOM0pT
QzEzUnVudGltZU1ldGhvZEUKICNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCAxNzhiMTMwMzY0
NDcwZTAzOGNlMGUyOWFiODZhMjc5MDBjMTJmODRjLi4xMjc1MDI5MjNkMTc5NzNiMzU3MmIwOWNm
Y2MxYzkyOTJiMjVmZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0xNTQs
NyArMTU0LDcgQEAgSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0TGlu
ZURhc2goRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgaWYgKCFpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKQorICAg
IGlmICghaXNKU0FycmF5KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRGFzaEFycmF5
IGRhc2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRl
eCA1OWJkOWYyOWUxNDE3NWY1ZWIyMGU3ZGViYWM4MTI1M2ViMTE5MTc2Li4yZjQ5OTk0Y2VmYzZk
NzQwOWI0NGRlOWU0NDI3Mzg0MjRiODhkMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTM4LDYgKzM4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihET01Db25zdHJ1Y3Rvck9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihE
T01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCk7CisKIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRI
YXNoVGFibGVGb3JHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlND
OjpIYXNoVGFibGUqIHN0YXRpY1RhYmxlKQogewogICAgIHJldHVybiBET01PYmplY3RIYXNoVGFi
bGVNYXA6Om1hcEZvcihnbG9iYWxEYXRhKS5nZXQoc3RhdGljVGFibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDhjNTc0ZDk4
NDlkMzY0MjE5NGYwMGI3YjgzY2MxMWE5YmY0ZWZiMTUuLjgwZTcxMmIwYmI4MzNkOGU1NjE5MjZm
ODljNTcxN2E4MzBjNDZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0QmFzZS5oIgogCiAjaWYgRU5BQkxFKFdPUktF
UlMpCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCkBAIC00OSw4ICs1MCw5IEBAIEpTRE9N
R2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0CiB7CiB9CiAKLUpTRE9NR2xvYmFsT2JqZWN0Ojp+SlNET01HbG9i
YWxPYmplY3QoKQordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CiB7CisgICAganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpTRE9NR2xvYmFsT2Jq
ZWN0Ojp+SlNET01HbG9iYWxPYmplY3QoKTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtNjUsNiArNjcsMTYg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbFRoaXMqIHQKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwogfQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGluaGVyaXRzKCZKU0RPTVdpbmRv
d0Jhc2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNET01XaW5kb3dC
YXNlKj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoaW5oZXJpdHMo
JkpTV29ya2VyQ29udGV4dEJhc2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29u
c3QgSlNXb3JrZXJDb250ZXh0QmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggODc1NWZmYjg4MWNmYjg0YWJlYTc0NmZkZDg3YzA4
ZTkxMWFlYTE3ZC4uYWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC00
OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RydWN0IEpTRE9NR2xv
YmFsT2JqZWN0RGF0YTsKIAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFs
RGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBjb25z
dCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiA9IDApOwotICAgICAgICB2aXJ0dWFsIH5K
U0RPTUdsb2JhbE9iamVjdCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsK
ICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNH
bG9iYWxUaGlzKik7CiAKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIHsgcmV0dXJuIG1fc3RydWN0dXJl
czsgfQogICAgICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSB7IHJldHVy
biBtX2NvbnN0cnVjdG9yczsgfQogCi0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAg
ICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgICAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gdGhpczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZTY4YmNhMWQ2
MzJlNGM5NWMxMDhkNDI2YjRjZjVlMWU5MWVhNTVlYS4uOGRlNDMyZWRmNjE3MDc3ZTdjMGI4OTI5
NGZlZTE4ZTM0NzVjMzY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCkBAIC02NSw2ICs2NSwxMSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvd1NoZWxs
KgogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChz
dGF0aWNHbG9iYWxzKSk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oY2VsbCktPkpTRE9NV2lu
ZG93QmFzZTo6fkpTRE9NV2luZG93QmFzZSgpOworfQorCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6
dXBkYXRlRG9jdW1lbnQoKQogewogICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5MWYzZjdh
NGQ0YzZjNmNlNjljNzUzYmI5YzVjMTAwZTE0MWM5ZGFhLi44NGMxODYyNGEyYzgwMmYzMjI1NzVl
MjJiOWRlMThhNWM1OGVkN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuaApAQCAtNDAsMTEgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgSlNET01XaW5kb3dCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUq
LCBQYXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKICAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTRE9NV2luZG93U2hlbGwqKTsK
IAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHVibGljOgog
ICAgICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKICAgICAgICAgRE9NV2luZG93KiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2luZG93IGZy
b20gdGhlIEpTRE9NV2luZG93U2hlbGwuCiAgICAgICAgIHZvaWQgd2lsbFJlbW92ZUZyb21XaW5k
b3dTaGVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAppbmRleCAyNWQzODRhYjBkNTQ2MDJkNjQ5M2I4YmFlZTIwOTIzZmMyNDc5Y2NlLi5k
OTZmODQwZGI2NDBhMjlkZjcxYjMxOTE3OTg1OTRkYjQzYWM1ZGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTcsOCArNTcsOSBA
QCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUGFzc1JlZlB0cjxET01XaQogICAgIHNldFdpbmRvdyh3aW5kb3cpOwogfQogCi1K
U0RPTVdpbmRvd1NoZWxsOjp+SlNET01XaW5kb3dTaGVsbCgpCit2b2lkIEpTRE9NV2luZG93U2hl
bGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxs
Kj4oY2VsbCktPkpTRE9NV2luZG93U2hlbGw6On5KU0RPTVdpbmRvd1NoZWxsKCk7CiB9CiAKIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgK
aW5kZXggNDNiOTZlMjQyNWY0MmYyZjA0OGE0OGNmMjAwYTgzMWY5Zjg3ZDlhYy4uZDg2NzY2ZDE3
YjJjZmZkN2M2YTFjYjIyZGI3NDcyMDNhOWUzNmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSlNDOjpKU0dsb2JhbFRoaXMgQmFzZTsKICAgICBw
dWJsaWM6CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBK
U0M6OlN0cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwotICAgICAgICB2aXJ0dWFsIH5KU0RP
TVdpbmRvd1NoZWxsKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAK
ICAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEpTRE9NV2luZG93Kj4obV91bndyYXBwZWRPYmplY3QuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQg
c2V0V2luZG93KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvdyogd2lu
ZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKaW5kZXgg
ZDU0ZmU3NGZhNjdjZmZmYzZlODg3NTQ0OGM0NGQ2ZTk1NTdhYTZhNC4uMDVkYTQwMjQwNWQzNjRi
YmNmOTQ4MjI4NzRhY2U2MDU0YWEzMjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zMiw5ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0RPTVdyYXBwZXI6OnZpcnR1YWxGdW5j
dGlvblRvUHJldmVudFdlYWtWdGFibGUoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNET01XcmFwcGVyKTsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTRE9NV3JhcHBlcjo6c19pbmZvID0geyAiSlNET01XcmFwcGVyIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdyYXBwZXIpIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmgKaW5kZXggMzY4NWM4OWU2ODQ4OGYzZTFkODljZWFhMzQ4YzliMWViNDk4ODRlNC4uYWNk
Nzk2YTNmYjQ0Yzk3MGM4MzY0ZGVhNzI4OWE4NjI2NTJlNWVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTQyLDE2ICs0MiwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgIH0KIAogcHJvdGVj
dGVkOgotICAgIC8vIEFuIGlubGluZSBmdW5jdGlvbiBjYW5ub3QgYmUgdGhlIGZpcnN0IG5vbi1h
YnN0cmFjdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCi0gICAgLy8gaW4gdGhlIGNsYXNzIGFz
IGl0IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJv
bC4KLSAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZSgp
OwotCiAgICAgZXhwbGljaXQgSlNET01XcmFwcGVyKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgCiAgICAgICAgIDogSlNOb25GaW5h
bE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDRhMzk2ZTQ1Y2Y3MWMzYzJlNzM3MjU2MmYzNzMxNjE5MDEwNTNkMGMuLjk1NmM5NjE1YTAx
ZTkzNjg2YmZlYTkxNTA1MWY2NWJjNjVhNGMwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEpTSW1hZ2VDb25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJV
Q1RPUihKU0ltYWdlQ29uc3RydWN0b3IpOwogCi1jb25zdCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbWFnZUNvbnN0
cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiSW1hZ2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNJbWFnZUNvbnN0cnVjdG9yKSB9OwogCiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1h
Z2VDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggNWFmN2UzN2IyN2Y5N2M0YzMzOGUwNDMyNGI2NjExN2ZhMTdhMzk5Mi4uNjFjMTVk
NmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xODgsOCArMTg4LDEwIEBAIEpTVmFsdWUg
SlNOb2RlOjphcHBlbmRDaGlsZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzTnVsbCgp
OwogfQogCi1TY29wZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqIG5vZGUpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNO
b2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogbm9kZSkgY29uc3QKIHsKKyAgICBpZiAoaW5oZXJpdHMoJkpTSFRNTEVsZW1lbnQ6OnNfaW5m
bykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNIVE1MRWxlbWVudCo+KHRoaXMpLT5w
dXNoRXZlbnRIYW5kbGVyU2NvcGUoZXhlYywgbm9kZSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcApp
bmRleCA0OWE4MjhjYzg4NTVhZDVkMzM5ZTRhMzdjMDg2NTUwOWYxNDkzMzc2Li43NzdlNWI4MWUz
NzE3YzFjMWYxN2JjZjViMDMyM2JjMzNkMDI3YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcs
IGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b2NvbHNWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCks
IHByb3RvY29sc1ZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KHByb3RvY29sc1ZhbHVl
KSkgewogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwogICAgICAgICAgICAg
SlNBcnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5KHByb3RvY29sc1ZhbHVlKTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbHNBcnJheS0+bGVuZ3RoKCk7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRCYXNlLmNwcAppbmRleCA5MmI3OWY0MzU3OGU1OTYyYTg3M2I3NjdjYzU3ZGEyMTM2ZjY4MDdh
Li5lNzljNmU0YmQ0MzIxZTVjMDc3ZjA4NzhlZmY0NTI4YWZkYTU5NWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcApAQCAtNjAs
OCArNjAsOSBAQCB2b2lkIEpTV29ya2VyQ29udGV4dEJhc2U6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQog
Ci1KU1dvcmtlckNvbnRleHRCYXNlOjp+SlNXb3JrZXJDb250ZXh0QmFzZSgpCit2b2lkIEpTV29y
a2VyQ29udGV4dEJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU1dv
cmtlckNvbnRleHRCYXNlKj4oY2VsbCktPkpTV29ya2VyQ29udGV4dEJhc2U6On5KU1dvcmtlckNv
bnRleHRCYXNlKCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2VyQ29udGV4
dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCmluZGV4IGQ4MTcxYzE1N2VlZGJl
OTllZjcyOTcwNTI2ZThjNzQyNWRjNWVmZDUuLmFiY2JlYjY1ODMyNDQ5MDUxYTM5ODVlYWFjNmMx
Y2Y0YTQyODU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckNvbnRleHRCYXNlLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7
CiAgICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgfkpTV29ya2VyQ29udGV4dEJhc2UoKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgV29ya2VyQ29udGV4dCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcAppbmRleCBjYjg2YjI5YjU4YjA0ZTA5ZjE2NGI0ZmFhNDZhMjA1NjMwMGZi
MTlmLi5iZmE5M2FhODcwN2IwOWE5ZTNiNGI2MzEzN2EyYmQzZThlNjMyZjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIEoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6
Y3JlYXRlKFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KICAgICBp
ZiAodmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBpZiAoaXNKU0FycmF5KCZzY3JpcHRTdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkp
IHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFz
QXJyYXkodmFsdWUpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggYjY3NWNhMzEzMmRjMTQ5MDRjODBiZWJiYTEyMDlkYmQ1NzM4NDYx
My4uYTU2YThkYzlmYThmOWM0OTFhMGM1NzkzODU3YWZjYWU3OGM5MDZmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC0zMTAsNyArMzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodmFsdWUpOwotICAgICAgICByZXR1cm4gaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2Jh
bERhdGEoKSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pOwor
ICAgICAgICByZXR1cm4gaXNKU0FycmF5KG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNB
cnJheTo6c19pbmZvKTsKICAgICB9CiAKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNP
YmplY3QqIG9iamVjdCkKQEAgLTM1Nyw3ICszNTcsNyBAQCBwcml2YXRlOgogICAgIEpTVmFsdWUg
Z2V0U3BhcnNlSW5kZXgoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgYm9v
bCYgaGFzSW5kZXgpCiAgICAgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhcnJheSk7Ci0g
ICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkpIHsKKyAg
ICAgICAgaWYgKGlzSlNBcnJheShhcnJheSkpIHsKICAgICAgICAgICAgIGlmIChKU0FycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHsKICAgICAgICAgICAgICAgICBoYXNJbmRleCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNsb3QuZ2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2Vk
MmIxZmQ5ZDU4OTQ2Y2VhODAzYzM4NzliYjYyODJjYTMxMGQ3Li41ZDRiYjYwNTFhYWNlN2NkYWUz
NzdjNTRhYmJjYTQ2NmY0ODRiNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKIAogICAg
ICMgQ3VzdG9tIHB1c2hFdmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNoRXZlbnRIYW5k
bGVyU2NvcGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikgY29uc3Q7XG5c
biIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhh
bmRsZXJTY29wZSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpTY29wZUNo
YWluTm9kZSogcHVzaEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTY29w
ZUNoYWluTm9kZSopIGNvbnN0O1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNhbGwg
ZnVuY3Rpb25zCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwpAQCAtODYxLDcg
Kzg2MSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4g
dG8gcmV0dXJuIGZhbHNlIGZvciBvYmplY3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCcuCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCJ9ID0gMTsKICAgICB9CiAKQEAgLTEzNjksNyArMTM2OCwxMCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG51c2luZyBuYW1l
c3BhY2UgSlNDO1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm5hbWVzcGFjZSBXZWJD
b3JlIHtcblxuIik7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIkFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoJGNsYXNzTmFtZSk7XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTCgkY2xhc3NOYW1lKTtcbiIpOworICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUigkY2xhc3NOYW1lKTtcblxuIik7CisgICAgfQogCiAg
ICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUoJG9iamVj
dCwgJGRhdGFOb2RlKTsKIApAQCAtMTUwMSw5ICsxNTAzLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwi
JHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0Ojpz
X2luZm8sIDAsIGdldCR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0g
eyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgMCwgZ2V0
JHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtjbGFzc05h
bWV9UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9
IHsgXCIke3Zpc2libGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZKU0M6OkpTTm9uRmluYWxPYmpl
Y3Q6OnNfaW5mbywgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZv
ID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgJiR7
Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xhc3NO
YW1lfVByb3RvdHlwZSkgfTtcblxuIik7CiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBu
ZSAiRE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3Jr
ZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbiIpOwpAQCAtMTUxMSw2ICsxNTEzLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KKwogICAgIGlmICgkbnVtQ29u
c3RhbnRzID4gMCB8fCAkbnVtRnVuY3Rpb25zID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEZWxlZ2F0aW5nUHJvdG90eXBlR2V0T3duUHJvcGVydHlTbG90In0pIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMTU3MSw3ICsxNTc0LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
ICAgIH0KIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICRjbGFzc05h
bWUiIC4gIjo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1cIiwgJiIgLiAkcGFyZW50
Q2xhc3NOYW1lIC4gIjo6c19pbmZvLCAiKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0
IENsYXNzSW5mbyAkY2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05h
bWV9XCIsICZCYXNlOjpzX2luZm8sICIpOwogCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9TdGF0aWNUYWJsZXMifSkgewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiYke2NsYXNzTmFtZX1UYWJsZSIpOwpAQCAtMTYy
MSw3ICsxNjI0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsKICAgICAgICAgaWYgKElzVHlwZWRB
cnJheVR5cGUoJGltcGxUeXBlKSBhbmQgKCRpbXBsVHlwZSBuZSAiQXJyYXlCdWZmZXJWaWV3Iikg
YW5kICgkaW1wbFR5cGUgbmUgIkFycmF5QnVmZmVyIikpIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yIGRlc2NyaXB0b3IodnB0cigpLCBP
QkpFQ1RfT0ZGU0VUT0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBPQkpFQ1RfT0ZGU0VUT0Yo
JHtjbGFzc05hbWV9LCBtX3N0b3JhZ2VMZW5ndGgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcigmJHtjbGFz
c05hbWV9OjpzX2luZm8sIE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZSks
IE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZUxlbmd0aCkpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBnbG9iYWxEYXRhLnJlZ2lzdGVyVHlw
ZWRBcnJheURlc2NyaXB0b3IoaW1wbCgpLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fc3RvcmFnZUxlbmd0aCA9IGlt
cGwoKS0+bGVuZ3RoKCk7XG4iKTsKQEAgLTMzODgsMTMgKzMzOTEsMTUgQEAgc3ViIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgbXkgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVy
cyA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVy
cyJ9OwogCiAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewotICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9Q29uc3RydWN0b3JcIiwgJkRPTUNv
bnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0
cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
Y29uc3QgQ2xhc3NJbmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2
aXNpYmxlQ2xhc3NOYW1lfUNvbnN0cnVjdG9yXCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OiR7Y29uc3RydWN0
b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IERPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7
dmlzaWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNf
aW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0pO1xuXG4iKTsKKworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFz
c0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFz
c05hbWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNfaW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05h
bWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9
O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX06OiR7Y29uc3RydWN0b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5jcHAKaW5kZXggNGIwM2FiOTQ0NTZiNWFiZWZjOGRiYzNjN2UxOWY2ODM2NjRkZjY4Zi4uYWQ2
ZDk5ZWEwNGZkMjBlNGQ4ZjQwYjkyODk3MzRlYWQyZmE5ZWZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
Y3BwCkBAIC0zNiw2ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGbG9hdDY0QXJyYXkpOworQVNT
RVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNGbG9hdDY0QXJyYXkpOwogCiAvKiBIYXNoIHRh
YmxlICovCiAKQEAgLTU0LDcgKzU1LDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXlDb25zdHJ1
Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNGbG9hdDY0QXJyYXlDb25z
dHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmxvYXQ2NEFycmF5Q29uc3Ry
dWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZsb2F0NjRBcnJheUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yKSB9OwogCiBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpCkBAIC05OCw3ICsxMDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiBnZXRKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT5nbG9iYWxEYXRhKCksICZK
U0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTRmxv
YXQ2NEFycmF5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXlQcm90b3R5cGUiLCAm
SlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5UHJvdG90
eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGbG9hdDY0QXJyYXlQcm90b3R5cGUpIH07
Citjb25zdCBDbGFzc0luZm8gSlNGbG9hdDY0QXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZs
b2F0NjRBcnJheVByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5
UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGbG9hdDY0QXJyYXlQcm90b3R5
cGUpIH07CiAKIEpTT2JqZWN0KiBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZTo6c2VsZihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC0xMjIsNyArMTI1
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0SlNGbG9hdDY0QXJyYXlUYWJsZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+
Z2xvYmFsRGF0YSgpLCAmSlNGbG9hdDY0QXJyYXlUYWJsZSk7CiB9CiAKLWNvbnN0IENsYXNzSW5m
byBKU0Zsb2F0NjRBcnJheTo6c19pbmZvID0geyAiRmxvYXQ2NEFycmF5IiwgJkpTQXJyYXlCdWZm
ZXJWaWV3OjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5VGFibGUgLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRmxvYXQ2NEFycmF5KSB9OworY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5
OjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXRKU0Zsb2F0
NjRBcnJheVRhYmxlICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zsb2F0NjRBcnJheSkgfTsKIAog
SlNGbG9hdDY0QXJyYXk6OkpTRmxvYXQ2NEFycmF5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gaW1w
bCkKICAgICA6IEpTQXJyYXlCdWZmZXJWaWV3KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBs
KQpAQCAtMTMyLDcgKzEzNSw3IEBAIEpTRmxvYXQ2NEFycmF5OjpKU0Zsb2F0NjRBcnJheShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIEpTRmxv
YXQ2NEFycmF5OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgVHlwZWRBcnJheURlc2Ny
aXB0b3IgZGVzY3JpcHRvcih2cHRyKCksIE9CSkVDVF9PRkZTRVRPRihKU0Zsb2F0NjRBcnJheSwg
bV9zdG9yYWdlKSwgT0JKRUNUX09GRlNFVE9GKEpTRmxvYXQ2NEFycmF5LCBtX3N0b3JhZ2VMZW5n
dGgpKTsKKyAgICBUeXBlZEFycmF5RGVzY3JpcHRvciBkZXNjcmlwdG9yKCZKU0Zsb2F0NjRBcnJh
eTo6c19pbmZvLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGbG9hdDY0QXJyYXksIG1fc3RvcmFnZSksIE9C
SkVDVF9PRkZTRVRPRihKU0Zsb2F0NjRBcnJheSwgbV9zdG9yYWdlTGVuZ3RoKSk7CiAgICAgZ2xv
YmFsRGF0YS5yZWdpc3RlclR5cGVkQXJyYXlEZXNjcmlwdG9yKGltcGwoKSwgZGVzY3JpcHRvcik7
CiAgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7CiAgICAgbV9zdG9yYWdlTGVuZ3RoID0g
aW1wbCgpLT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRl
eCA0NDAwZTVlMTIyZGIzNjRkNjJlYzhjM2IyODM4ZWQ4MmM4NDIzODliLi5mODBiNjQ5NzMxZGEz
M2Y1MzZmZjljZTcxMDFjYjFmZmE1NGIyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKTsKIAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIApAQCAtNTMsNyAr
NTQsOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwotY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZv
LCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCkBA
IC0xMjcsMTQgKzEzMCwxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDEsIDAs
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6c19p
bmZvLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUpIH07Citjb25zdCBDbGFz
c0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZKU0RP
TVdyYXBwZXI6OnNfaW5mbywgJkpTVGVzdEV2ZW50Q29uc3RydWN0b3JUYWJsZSwgMCAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yVGFibGUsIDAgLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEV2ZW50Q29u
c3RydWN0b3I+IGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDBhYWE1NmE3NDZiOTk5MDZlZmU4MTM0ZTZm
ZDc4MjVhNDQzMTBmYTAuLmJhMjJiOWYyNTQ2ODUxM2JjM2JkYTc4ZGFmY2FhYzJhZjA5Yjc0ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC00Miw2ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
SlNUZXN0SW50ZXJmYWNlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdElu
dGVyZmFjZSk7CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtNjksNyArNzAsOSBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
c1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgMCB9OwotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6
OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUihKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Ip
IH07CiAKIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpA
QCAtMTMwLDE0ICsxMzMsMTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdElu
dGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VQcm90b3R5cGUiLCAmSlND
OjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJs
ZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUpIH07Citj
b25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
SW50ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdl
dERPTVByb3RvdHlwZTxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAK
LWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZh
Y2UiLCAmSlNET01XcmFwcGVyOjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgMCAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50
ZXJmYWNlKSB9OwogCiBKU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxU
ZXN0SW50ZXJmYWNlPiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmlu
ZGV4IGExZjZiOGM2MmIyNjdhZjY0NTcxNGU3NTlkMmRjYWFiMTNhMTBhNzIuLjczN2JmNTQ2NDky
NDRmODIxZmJiNGE0ZTY5ZmIwZWZiZjFmM2ZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVD
VE9SKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOwogCiAvKiBIYXNoIHRhYmxlICovCiAK
QEAgLTUxLDcgKzUyLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10KIH07CiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFi
bGUgPSB7IDEsIDAsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0
cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUihKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOwor
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxl
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvcikgfTsKIAogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rv
ck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTg0LDcgKzg3LDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlID0geyAyLCAxLCBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5m
byBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6
OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
KSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CkBAIC0xMDMsNyArMTA2LDcgQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG8KICAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmSlNET01X
cmFwcGVyOjpzX2luZm8sICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGFibGUsIDAgLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpIH07Citjb25z
dCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0geyAiVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKSB9OwogCiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyPiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGY0ZDVkZDI5OThmZTc3YTAx
NTZhOWJiOTJlODg3YWRjMWNjM2VjZmUuLjIzNGE2MTRkYjU4NDhjYjM5YjYzMmU1MDEwYjMyNjU2
ZWQzZGQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOwogCiAvKiBIYXNo
IHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCkBAIC01MCw3ICs1MSw5IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZVZh
bHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1
Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTc0LDcgKzc3LDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAm
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIHN0YXRpY19jYXN0PEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFt
ZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3RvciIsICZET01Db25zdHJ1
Y3Rvck9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVj
dG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9y
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
CkBAIC0xMjUsMTQgKzEyOCwxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDEs
IDAsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6
c19pbmZvLCAmSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07Citjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZK
U0RPTVdyYXBwZXI6OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3RydWN0b3JUYWJsZSwgMCAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcikgfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1
Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yVGFibGUsIDAgLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE5hbWVk
Q29uc3RydWN0b3I+IGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDVjN2IwZDFkOGZmY2QyZjI0Yzg4YjZkNDMxM2RkNWRiMmEz
MTgwYTEuLjM3OTZmYjc5OGMxZmQ1MWY5NjAzYmJjYjM1NzU3YTg5N2Q1MGJiNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC02MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0T2JqKTsKK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdE9iaik7CiAKIC8qIEhhc2ggdGFibGUgKi8KIApA
QCAtMTY3LDcgKzE2OCw5IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9iajo6Q09OU1Rf
VkFMVUVfMTMsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nCiBDT01QSUxFX0FTU0VS
VCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RPYmpFbnVtQ09OU1RfVkFM
VUVfMTRJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMTUgPT0gVGVz
dE9iajo6Q09OU1RfSU1QTCwgVGVzdE9iakVudW1DT05TVF9JTVBMSXNXcm9uZ1VzZURvbnRDaGVj
a0VudW1zKTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0T2JqQ29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywg
JkpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
T2JqQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdE9iakNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE9i
akNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3Ry
dWN0b3IpIH07CiAKIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpAQCAtMjY5
LDcgKzI3Miw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2Jq
UHJvdG90eXBlVGFibGUgPSB7IDEzNywgMTI3LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVl
cywgMCB9OwotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9ialByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE9ialByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJkpTVGVz
dE9ialByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9ialByb3Rv
dHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RPYmpQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFi
bGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiBKU09i
amVjdCogSlNUZXN0T2JqUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAgLTI4OCw3ICsyOTEsNyBAQCBib29sIEpTVGVzdE9i
alByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZQogICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8SlNUZXN0
T2JqUHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqIiwgJkpTRE9NV3JhcHBlcjo6c19pbmZv
LCAmSlNUZXN0T2JqVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iaikgfTsK
K2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmo6OnNfaW5mbyA9IHsgIlRlc3RPYmoiLCAmQmFzZTo6
c19pbmZvLCAmSlNUZXN0T2JqVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9i
aikgfTsKIAogSlNUZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKICAg
ICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggM2Jh
YmQzYzFjMTkxNGNlNjU2MDBiMzY4ZDEzZmYyMjJlODIwMDYyYy4uYmMwY2Y1Y2Y1ZDFlMTE3MWQ4
ZTY3YTFhOWE3ZjExMzhjZTc0OWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KTsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC01Miw3ICs1Myw5IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3RvclRhYmxlCiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9Owor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
OiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTg0LDE0
ICs4NywxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYQogfTsKIAogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJs
ZSA9IHsgMSwgMCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
VGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8s
ICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSkgfTsKIAogSlNPYmpl
Y3QqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6c2VsZihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAmSlNET01XcmFwcGVyOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBsKQogICAgIDog
SlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCmluZGV4IDQwMjM4M2U4ODM4OTczMmRiMmNlNjhkNjJk
NDYwM2MxNGJmOGJjOGUuLjZkYzE3ZmYyMmE1NTI2ZDgyNGYzNjlhZDU0Nzk4MTVmM2IxNjI3OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTQ4LDEw
ICs0OCw2IEBAIHZvaWQgQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAot
Q1J1bnRpbWVPYmplY3Q6On5DUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIENJbnN0YW5jZSogQ1J1
bnRpbWVPYmplY3Q6OmdldEludGVybmFsQ0luc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0luc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCmluZGV4IGJlZWRkYmIyODMyY2M0YTFhZWZm
Y2EyMDgzMDYzNjc4ODNkNDgyNTcuLjZiYzExZmUwYjAyZDI1NGI2YjBlOWJkMDExY2VhYmE3NjE5
NzFkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaApAQCAtNTAs
OCArNTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+Q1J1bnRpbWVPYmplY3QoKTsKLQogICAgIENJbnN0YW5jZSogZ2V0SW50ZXJuYWxD
SW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3Qu
Y3BwCmluZGV4IDlkNTE3ZTM5ODA5ODkwNzRhNThhZDQwMGQ3MjQ0OWUyOGMyYjEzMDIuLjg0YTNl
ZjMxOWFiN2ZhZjVmODVlZDlkYTYwMGMwMDFkOWEwYTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAKQEAgLTQ2LDEwICs0
Niw2IEBAIHZvaWQgSmF2YVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAot
SmF2YVJ1bnRpbWVPYmplY3Q6On5KYXZhUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIEphdmFJbnN0
YW5jZSogSmF2YVJ1bnRpbWVPYmplY3Q6OmdldEludGVybmFsSmF2YUluc3RhbmNlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SmF2YUluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0
YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFS
dW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGlt
ZU9iamVjdC5oCmluZGV4IGViZWRkNzY2ZjNjZDlkZjUxYjg1N2U5N2ZiZDEzMmU0OTgzZTBmNGMu
Ljg0OWEwMDc3ZWI2ZmMyZWExNTljM2JiMDFhMDhmNjFhMGZlY2JjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaApAQCAtNDgsOCAr
NDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+SmF2YVJ1bnRpbWVPYmplY3QoKTsKLQogICAgIEphdmFJbnN0YW5jZSogZ2V0SW50ZXJu
YWxKYXZhSW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgK
aW5kZXggMmRhYmZjNDBjMTdkNTc2ZTM5MDk5ZGYyNDkzOGE3ZTlhZTRmYjAyYy4uMGQ4ODUxZTFk
NWQ4YzI2YmY3NTkwMDQwNjJjNjNhYzQ0M2Y4NTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5PYmpDUnVudGlt
ZU9iamVjdCgpOwotCiAgICAgT2JqY0luc3RhbmNlKiBnZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgp
IGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCmluZGV4IGI5MjRmYWQz
M2M4Y2NkMTBlODQ1MjJiNjE2NjhiYTAzZGFlZjU0ZTYuLjdiYjE3NmM2YmZmNWY1NDM3MDI2OTUy
ZWYzYzk5YTdjYWJmNWUwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L09iakNSdW50aW1lT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09i
akNSdW50aW1lT2JqZWN0Lm1tCkBAIC00NiwxMCArNDYsNiBAQCB2b2lkIE9iakNSdW50aW1lT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLU9iakNSdW50aW1lT2JqZWN0Ojp+T2JqQ1J1
bnRpbWVPYmplY3QoKQotewotfQotCiBPYmpjSW5zdGFuY2UqIE9iakNSdW50aW1lT2JqZWN0Ojpn
ZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE9iamNJbnN0YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IGU3MjBlZjYwNjc2NGJkOGJiZGNmMmMxYWYz
ZGE1NjQ1MTcyYWRmZDYuLjYwMjU1OTQ1MGE1MGI0ZmMzNDdjODhlODY3MjlkM2ZmNDQ1MDg4YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMjIsNiAr
MTIyLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIE9iamNGYWxsYmFja09iamVjdElt
cChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCi0gICAgdmlydHVh
bCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNh
dXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQg
dG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKICAgICBSZWZQdHI8T2JqY0luc3Rh
bmNlPiBfaW5zdGFuY2U7CiAgICAgSWRlbnRpZmllciBfaXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA1NTliOTAyMzdmZDAwNWQ3MWU0MDJmZDQ3
MTI1NDA3ZmQxOGY2NDNjLi43MmZlZGM3NDVhZmM0MTM0OTcxMzIwNmUzMmM0Y2QxNjAxMWQ4MzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0xOTks
NiArMTk5LDExIEBAIE9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1w
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjCiB7CiB9CiAKK3ZvaWQgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8T2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2VsbCktPk9iamNGYWxsYmFja09iamVjdEltcDo6fk9iamNG
YWxsYmFja09iamVjdEltcCgpOworfQorCiB2b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKaW5kZXggYTliN2ZhNzM3ZWVlY2ExODhmMjc5OTFhNGJm
ZjQyNmJjZTE4OWQyMy4uYWM2MTk4NmEzMGI3ZDc2ZTIwMjEwYjRiZjMwZjQyZmUxM2U4MGVmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTQ1LDcgKzE0NSw3
IEBAIHN0YXRpYyBKU1JlYWxUeXBlIHZhbHVlUmVhbFR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbCkKICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgICAgZWxzZSBpZiAodmFsLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gTnVsbDsKLSAgICBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KCZl
eGVjLT5nbG9iYWxEYXRhKCksIHZhbCkpCisgICAgZWxzZSBpZiAoaXNKU0J5dGVBcnJheSh2YWwp
KQogICAgICAgICByZXR1cm4gSlNCeXRlQXJyYXk7CiAgICAgZWxzZSBpZiAodmFsLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgSlNPYmplY3QgKm9iamVjdCA9IHZhbC50b09iamVjdChleGVjKTsKQEAg
LTk4MCw2ICs5ODAsMTEgQEAgUXRSdW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKCkKICAg
ICBkZWxldGUgZF9wdHI7CiB9CiAKK3ZvaWQgUXRSdW50aW1lTWV0aG9kOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oY2VsbCktPlF0UnVudGlt
ZU1ldGhvZDo6flF0UnVudGltZU1ldGhvZCgpOworfQorCiAvLyA9PT09PT09PT09PT09PT0KIAog
UXRSdW50aW1lTWV0aG9kRGF0YTo6flF0UnVudGltZU1ldGhvZERhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggNjI5Yzc5Njk4OGY1YzVlZTgxY2MzOWIwOGNkMDY0
NTk3MGVlOWY2OC4uNDA2OTk3ZjM0YTYzMWQ2NjZmNDA1ZWI4NTI5ZjM2MzBmYmNkMTNhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDggQEAgY2xh
c3MgUXRSdW50aW1lTWV0aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgdmlydHVhbCB+UXRSdW50
aW1lTWV0aG9kKCk7CisgICAgflF0UnVudGltZU1ldGhvZCgpOworICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGRlM2FjMGI4MTUwOTUw
MjczMjFlYjcxNWNmM2MyY2MzZmFhMWI4YWIuLjdkZWQ2NzMwNzgwZGZmZTY5ODJmMGRmZGYzM2E4
OGZmZWQ1NDk4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAg
LTU0LDYgKzU0LDExIEBAIFJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpCiAgICAgZGVsZXRl
IGdldENvbmNyZXRlQXJyYXkoKTsKIH0KIAordm9pZCBSdW50aW1lQXJyYXk6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFy
cmF5Ojp+UnVudGltZUFycmF5KCk7Cit9CisKIEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7
CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmlu
ZGV4IDc4NjBkMzE3MmFhNDhhMzlkM2U5NDQxMGU2YzkzNDQ0MzE5ODAzZTcuLjU1MzBjYjM0NzM3
ZjcwM2M5NGM2YzVjN2ViMjA0ZDFkMTNkNzc2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaApAQCAtNDcsNyArNDcsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdHlwZWRl
ZiBCaW5kaW5nczo6QXJyYXkgQmluZGluZ3NBcnJheTsKLSAgICB2aXJ0dWFsIH5SdW50aW1lQXJy
YXkoKTsKKyAgICB+UnVudGltZUFycmF5KCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwCmluZGV4IDlhYTNlNGZiYzk4MzlhZGY2N2M4OGFkYjM2MjFhNjFjOTU3NDVkNmEu
LjZiODYyMzE1ZjkwYWY5Njc0MDFjN2NlMTA1MzVkMzljYzZkODc0OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNTAsOCArNTAsOSBAQCBSdW50aW1lTWV0
aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLAogewogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OnZ0YWJsZUFuY2hvcigp
Cit2b2lkIFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2Fz
dDxSdW50aW1lTWV0aG9kKj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7
CiB9CiAKIHZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmgKaW5kZXggNDBlZGExMzQxZGFlZWUxMjYwZTUwMmE4MWQ3MzgzYzY2YWI2
MzI2YS4uZjc5NTVhMTIyMzE5ZmI2MzVlMmI2OGQ1MTNkYzVhNTI4YWYyNThmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUnVu
dGltZU1ldGhvZCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNo
b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIFJ1
bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBC
aW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCA0YWJiYzhlYWUxZjIzZmU2YmYxN2QzYTkwNDM5
MDAzMjY4YjEyOWMzLi43ZWMwODdkMzU2NGQ1OTc4OTY5YTMwY2VjMTc2MTQwNzQ1NjM0YjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTQ5LDkgKzQ5LDEx
IEBAIHZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1SdW50aW1l
T2JqZWN0Ojp+UnVudGltZU9iamVjdCgpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCghbV9pbnN0YW5jZSk7CisgICAgUnVudGltZU9iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJU
KCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKKyAgICB0aGlzT2JqZWN0LT5SdW50aW1lT2JqZWN0
Ojp+UnVudGltZU9iamVjdCgpOwogfQogCiB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCAwNTA0MzM2ZWI4YWY1
MzVkMmViZGMxNjQ5ZWRkMGEzYjU2NTczODkyLi42NDM3MTUxOGJiNzRlN2IzMjA2NjNmMTc0OTE3
ZDRmM2I1OGJhNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+UnVudGltZU9iamVjdCgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlS
dW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1
bnRpbWVPYmplY3QuaAppbmRleCBjMTY0NjgwNGIyZWI4ZjA1MjA4ZDUxZjc1NTliZTk1OTFjYzE4
NGUyLi44MzRmOWI4YWQzMGM5MWFhMjdjY2JjZmJhMTA5YzRmZDUxNzZjNTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
aApAQCAtNDksOCArNDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+UHJveHlSdW50aW1lT2JqZWN0KCk7Ci0KICAgICBQcm94eUluc3Rh
bmNlKiBnZXRJbnRlcm5hbFByb3h5SW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1
bnRpbWVPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1
bnRpbWVPYmplY3QubW0KaW5kZXggZjUzMTkyNDljYjhjZmVmYmUwNTJjMzE1NWQxYzliMDZkZGI0
NzM1OS4uYzI3ZTcyOGNkZWY3YzRhOGE0ZDhjOWI1Yzk0NGViY2ZlZWQ1NzI0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVj
dC5tbQpAQCAtNDcsMTAgKzQ3LDYgQEAgdm9pZCBQcm94eVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKIH0KIAotUHJveHlSdW50aW1lT2JqZWN0Ojp+UHJveHlSdW50aW1lT2JqZWN0
KCkKLXsKLX0KLQogUHJveHlJbnN0YW5jZSogUHJveHlSdW50aW1lT2JqZWN0OjpnZXRJbnRlcm5h
bFByb3h5SW5zdGFuY2UoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUlu
c3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBk
M2QxMDBhODQ5NWRkMGM5MzJlM2NiODJmZWZlMzdkNWU3MDRiNWFlLi44OTgxNDcxMzU3YjJhZTVi
NmJlY2QwZDY2MWNiNDA4ODQ5ZTk2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCkBAIC0zOSw2ICsz
OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNOUE1ldGhvZCk7CisKIGNvbnN0IENsYXNz
SW5mbyBKU05QTWV0aG9kOjpzX2luZm8gPSB7ICJOUE1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOUE1ldGhvZCkgfTsKIAogSlNO
UE1ldGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNw
cAppbmRleCBhMmZkMjI2ZGVkZGUyZWQ5ODg1OWRlMmIwOGUxNThmOTBmMmNkZWI2Li5hYTU2YTM3
NTI3Njc1ZTk0NWZmYjBiY2M1NTVmNTBjZDUyNWNiYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBA
IC03NCw2ICs3NCwxMSBAQCBKU05QT2JqZWN0Ojp+SlNOUE9iamVjdCgpCiAgICAgQVNTRVJUKCFt
X25wT2JqZWN0KTsKIH0KIAordm9pZCBKU05QT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpLT5KU05QT2JqZWN0Ojp+SlNOUE9iamVj
dCgpOworfQorCiB2b2lkIEpTTlBPYmplY3Q6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVCht
X25wT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4IDRiOWFkN2NhZDE5MzQ5ZTI4ZjdlZDcxMjk3
M2FkNTc4ODMzZjQ1NWYuLjdmMjZmMGQ2NzM2YmI2ZGIyZjMyM2RmMmIwN2Y5ZjAyMmQ1MzFiNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
fkpTTlBPYmplY3QoKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBiNDZmMTU5YmE4
ZGFjNGM2OWZlYjA2MWIyMzg5NjgxODdjZmY2YzgwLi41OWUxMjE3YzI4Yjk3MmM3YzA0MTIzNGM4
YTFiNTE1MTljZmZkYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNjgsNiArMTY4LDgg
QEAgRVhQT1JUUwogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVA
QEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9y
QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVt
ZW50QDJASEhfTkBaCiAgICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBA
UUFFWFhaCisgICAgICAgID9zX2luZm9ASlNET01XcmFwcGVyQFdlYkNvcmVAQDJVQ2xhc3NJbmZv
QEpTQ0BAQgorICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVj
dEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Nj
cm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJW
SW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRp
dmVUb0ZyYW1lQEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0RE9NRXhj
ZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpAQCAtMTg5LDQgKzE5MSwz
IEBAIEVYUE9SVFMKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1Zh
bHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKLSAgICAgICAgP3ZpcnR1YWxGdW5jdGlvblRvUHJldmVu
dFdlYWtWdGFibGVASlNET01XcmFwcGVyQFdlYkNvcmVAQE1BRVhYWgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDJDRkxpdGUuZGVmCmluZGV4IGU1N2RjZGI4NmY2ZGE5ODBkNTBjNGUxYjBkNmM4NjU5YTQ0
MmM1M2MuLmYwYmYxOGIxMWFjZTI3ZmY0MTI4ZDg3YjhlYWYwY2QxZDliMzcyNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE4Miw0ICsxODIsMyBAQCBFWFBPUlRTCiAg
ICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCiAg
ICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2Vi
Q29yZUBAUUFFWFhaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1l
Vmlld0AyQFhaCi0gICAgICAgID92aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlQEpT
RE9NV3JhcHBlckBXZWJDb3JlQEBNQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDQw
Y2I3OGJiNTNmZTQ0OTYyMDZiYTBmM2ExNDk5OThiNWY5ZGQ3NzguLjMyYTJjYTk5NWNkMTYxYzM1
OWEwY2YyYjUxNTRhMjRiZjI1YWVhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDEs
NyArNDEsNiBAQCBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXY7CiBfWk43V2ViQ29yZTEwQ2xp
ZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFOwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dl
bmVyYXRlZFN0cmVhbUV2OwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7Ci1f
Wk43V2ViQ29yZTEySlNET01XcmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRh
YmxlRXY7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aEVQTlNfN0VsZW1lbnRFaWliOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJqUzZfOwog
X1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VF
UE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJtUzZfOwpAQCAtNjksNiArNjgsNyBAQCBfWk43V2Vi
Q29yZTlKU0VsZW1lbnQ2c19pbmZvRTsKIF9aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1Zh
bHVlRTsKIF9aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dEViOwogX1pOSzdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTRzdWdnZXN0ZWRWYWx1ZUV2Owor
X1pOSzdXZWJDb3JlMTdKU0RPTUdsb2JhbE9iamVjdDIyc2NyaXB0RXhlY3V0aW9uQ29udGV4dEV2
OwogX1pOSzdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjExaXNQcmVsb2FkZWRFUktOM1dU
RjZTdHJpbmdFOwogX1pOSzdXZWJDb3JlMjZIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDIxbGFz
dENoYW5nZVdhc1VzZXJFZGl0RXY7CiBfWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdjsKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNGVmM2ViMTU5MWQwM2ZhZWQx
OTAxYmRkMTg3MWFlZDc2ZmFiNGZmLi43ZWZjN2UxYjMzNDgxNzAwYmQyNGUxMTA4NWYxMjU5NzJh
Yjg0ZDZiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcjogUmVtb3ZlZCBzeW1ib2wgbm8gbG9uZ2VyIHByZXNlbnQuCisKIDIwMTEtMTItMTQg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFJv
bGxvdXQgcjEwMjc2OSwgYmVjYXVzZSBpdCBicm9rZSBRdC00LjggYnVpbGRzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119371</attachid>
            <date>2011-12-14 21:27:56 -0800</date>
            <delta_ts>2011-12-15 20:21:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74331-20111214212755.patch</filename>
            <type>text/plain</type>
            <size>310231</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODg3MzgyMzFiNTMzMDgyNTk0NzdjYWY5MjVhM2I1MmNhMTFjZTRjLi41YTBjMzQ2YTgxM2E5Y2Mx
OTEzZTI2NTkwZjhkYmY0OGNjNTk1ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjIgQEAKKzIwMTEtMTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZWdhcGF0Y2gg
d2hpY2ggZnJlZXMgdXMgZnJvbSB0aGUgY2hhaW5zIG9mIHZpcnR1YWwgZGVzdHJ1Y3RvcnMuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3JzLCB3aGlj
aCBhcmUgdGhlIGxhc3Qgb2YgdGhlIHZpcnR1YWwgCisgICAgICAgIGZ1bmN0aW9ucywgZnJvbSB0
aGUgSlNDZWxsIGhpZXJhcmNoeSwgd2UgbmVlZCB0byBhZGQgdGhlIENsYXNzSW5mbyBwb2ludGVy
IHRvIAorICAgICAgICB0aGUgY2VsbCByYXRoZXIgdGhhbiB0byB0aGUgc3RydWN0dXJlIGJlY2F1
c2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBsYXppbHkgY2FsbCAKKyAgICAgICAgdGhlIHN0YXRp
YyBkZXN0cm95KCkgZnVuY3Rpb25zIHRoYXQgd2lsbCByZXBsYWNlIHRoZSB2aXJ0dWFsIGRlc3Ry
dWN0b3JzLCB3ZSAKKyAgICAgICAgbmVlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgQ2xhc3NJ
bmZvIHdpdGhvdXQgdGhlIGRhbmdlciBvZiB0aGUgb2JqZWN0J3MgCisgICAgICAgIFN0cnVjdHVy
ZSBiZWluZyBjb2xsZWN0ZWQgYmVmb3JlIHRoZSBvYmplY3QgaXRzZWxmLgorCisgICAgICAgIEFm
dGVyIGFkZGluZyB0aGUgQ2xhc3NJbmZvIHRvIHRoZSBjZWxsLCB3ZSBjYW4gdGhlbiBiZWdpbiB0
byByZW1vdmUgb3VyIHVzZSAKKyAgICAgICAgb2YgdnB0cnMgZm9yIG9wdGltaXphdGlvbnMgd2l0
aGluIHRoZSBKSVQgYW5kIHRoZSBHQy4gIFdoZW4gd2UgaGF2ZSByZW1vdmVkIAorICAgICAgICBh
bGwgb2YgdGhlIHN0b3JlZCB2cHRycyBmcm9tIEpTR2xvYmFsRGF0YSwgd2UgY2FuIHRoZW4gYWxz
byByZW1vdmUgYWxsIG9mIAorICAgICAgICB0aGUgcmVsYXRlZCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisKKyAgICAgICAgVGhlIHJlcGxhY2VtZW50IGZvciB2aXJ0dWFsIGRlc3RydWN0b3JzIHdp
bGwgYmUgdG8gYWRkIGEgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gCisgICAgICAgIHBvaW50ZXIg
dG8gdGhlIE1ldGhvZFRhYmxlIHN0b3JlZCBpbiBDbGFzc0luZm8uICBBbnkgc3ViY2xhc3Mgb2Yg
SlNDZWxsIHRoYXQgaGFzIAorICAgICAgICBhIG5vbi10cml2aWFsIGRlc3RydWN0b3Igd2lsbCBy
ZXF1aXJlIGl0cyBvd24gc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24gdG8gc3RhdGljIAorICAgICAg
ICBjYWxsIGl0cyBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3IsIHdoaWNoIHdpbGwgbm93IGJlIG5v
bi12aXJ0dWFsLiAgSW4gZnV0dXJlIAorICAgICAgICBwYXRjaGVzIHdlIHdpbGwgc2xvd2x5IG1v
dmUgYXdheSBmcm9tIGRlc3RydWN0b3JzIGFsdG9nZXRoZXIgYXMgd2UgbWFrZSBtb3JlIGFuZCAK
KyAgICAgICAgbW9yZSBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnkgcmF0aGVyIHRoYW4gbWFs
bG9jLWVkIG1lbW9yeS4gIFRoZSBHQyB3aWxsIG5vdyAKKyAgICAgICAgY2FsbCB0aGUgc3RhdGlj
IGRlc3Ryb3kgbWV0aG9kIHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAg
ICAgICAgQXMgd2UgZ28gdGhyb3VnaCB0aGUgaGllcmFyY2h5IGFuZCBhZGQgc3RhdGljIGRlc3Ry
b3kgZnVuY3Rpb25zIHRvIGNsYXNzZXMsIAorICAgICAgICB3ZSB3aWxsIGFsc28gYWRkIGEgbmV3
IGFzc2VydCwgQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IsIHRvIHRob3NlIGNsYXNzZXMg
CisgICAgICAgIHRvIHdoaWNoIGl0IGFwcGxpZXMuICBUaGUgZnV0dXJlIGdvYWwgaXMgdG8gZXZl
bnR1YWxseSBoYXZlIGV2ZXJ5IGNsYXNzIGhhdmUgdGhhdCBhc3NlcnQuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Nv
bnN0cnVjdG9yOjpkZXN0cm95KTogQWRkIGEgZGVzdHJveSBmdW5jdGlvbiB0byBzdGF0aWNhbGx5
IGNhbGwgCisgICAgICAgIH5KU0NhbGxiYWNrQ29uc3RydWN0b3IgYmVjYXVzZSBpdCBoYXMgc29t
ZSBleHRyYSBkZXN0cnVjdGlvbiBsb2dpYy4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6IEFkZCB0cml2
aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBKU0NhbGxiYWNrRnVuY3Rpb24uCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOiBBZGQgYSBkZXN0cm95IGZ1bmN0aW9uIHRvIHN0YXRp
Y2FsbHkgY2FsbCB+SlNDYWxsYmFja09iamVjdCAKKyAgICAgICAgYmVjYXVzZSBpdCBoYXMgYSBt
ZW1iZXIgT3duUHRyIHRoYXQgbmVlZHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChKU0M6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6IEFkZC9yZW1vdmUgbmVjZXNzYXJ5IHN5bWJvbHMgZm9yIEpTQy4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmOiBTYW1lIGZvciBXaW5kb3dzIHN5bWJvbHMuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcDogRGVidWdnZXJBY3RpdmF0aW9uLCBmb3Igc29tZSBzdHJhbmdl
IHJlYXNvbiwgZGlkbid0IAorICAgICAgICBoYXZlIGl0cyBvd24gQ2xhc3NJbmZvIGRlc3BpdGUg
dGhlIGZhY3QgdGhhdCBpdCBvdmVycmlkZXMgYSBudW1iZXIgb2YgTWV0aG9kVGFibGUgCisgICAg
ICAgIG1ldGhvZHMuICBBZGRlZCB0aGUgQ2xhc3NJbmZvLCBhbG9uZyB3aXRoIGFuIGFzc2VydGlv
biB0aGF0IGl0cyBkZXN0cnVjdG9yIGlzIHRyaXZpYWwuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOiBSZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJndW1lbnQgdG8gaXNKU0FycmF5LCBpc0pTQnl0ZUFycmF5
LCAKKyAgICAgICAgaXNKU1N0cmluZywgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3Bw
OiAgRGl0dG8uICBBbHNvIHJlbW92ZSB1c2VzIG9mIGpzQXJyYXlWUHRyIGluIGZhdm9yIG9mIHVz
aW5nIHRoZSAKKyAgICAgICAgSlNBcnJheSBDbGFzc0luZm8gcG9pbnRlci4KKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6ICBSZXBsYWNlIHVzZXMgb2YgdGhlIG9sZCB2cHRycyB3aXRoIG5ldyBDbGFzc0luZm8g
CisgICAgICAgIGNvbXBhcmlzb25zIHNpbmNlIHdlIGRvbid0IGhhdmUgdnB0cnMgYW55bW9yZS4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6IFJlbW92ZSBhbGwgdXNlcyBvZiB2cHRycyBpbiBHQyBvcHRpbWl6YXRpb25zIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCAKKyAgICAgICAgQ2xhc3NJbmZvIGNvbXBhcmlzb25zLgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFp
bik6CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IERpdHRvLgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOiBEaXR0by4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9y
Lmg6IERpdHRvLgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IpOgorICAg
ICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uY3BwOiBOb3cgdGhhdCB3ZSBkb24ndCBoYXZlIHZw
dHJzLCB3ZSBjYW4ndCBjb3VudCB0aGVtLiAgCisgICAgICAgIFdlJ2xsIGhhdmUgdG8gcmVuYW1l
IHRoaXMgY2xhc3MgYW5kIG1ha2UgaXQgdXNlIENsYXNzSW5mbyBwdHJzIGluIGEgZnV0dXJlIHBh
dGNoLgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6Y291bnQpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDogUmVtb3ZlIGFsbCBnbG9iYWwgZGF0YSBhcmd1bWVu
dHMgZnJvbSBpc0pTQXJyYXksIAorICAgICAgICBldGMuIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpT
Qzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6IFJlbW92ZSB2cHRyIGFyZ3VtZW50IGZyb20gZW1pdEFsbG9jYXRlQmFz
aWNKU09iamVjdCAKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOiBSZW1vdmUgdnB0
ciBwbGFudGluZywgYW5kIGFkZCBDbGFzc0luZm8gcGxhbnRpbmcsIAorICAgICAgICByZW1vdmUg
YWxsIHZ0YWJsZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgYnJhbmNoIGNvZGUgd2l0aCBjb3Jy
ZXNwb25kaW5nIENsYXNzSW5mby4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmlt
aXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9l
cSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6IFJlbW92ZSBnbG9iYWwgZGF0YSBhcmd1bWVudCBm
cm9tIGlzSlNTdHJpbmcsIGV0Yy4KKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICog
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDogUmVwbGFjZSB2cHRyIHJlbGF0ZWQgc3R1ZmYgd2l0
aCBDbGFzc0luZm8gc3R1ZmYuCisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6Omxv
YWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDogUmVtb3ZlIGdsb2JhbCBkYXRhIGFyZ3VtZW50IGZyb20gaXNKU0Fy
cmF5LgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQb3Ap
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1NoaWZ0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY0ZpbHRlcik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTWFwKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNFdmVyeSk6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jRm9yRWFjaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU29tZSk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmVkdWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZWR1Y2VSaWdodCk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
Y3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0Jv
b2xlYW5PYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOiBBZGQgZGVzdHJv
eSBmdW5jdGlvbiBwb2ludGVyIHRvIE1ldGhvZFRhYmxlLgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAg
ICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOiBBZGQgZGVzdHJveSBmdW5jdGlvbiBmb3IgRGF0
ZUluc3RhbmNlIGJlY2F1c2UgaXQgaGFzIGEgUmVmUHRyIAorICAgICAgICB0aGF0IG5lZWRzIGRl
c3RydWN0aW9uLgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6
IERpdHRvIChiZWNhdXNlIG9mIFVTdHJpbmcgbWVtYmVyKS4KKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Lmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDogQWRkIHRyaXZpYWwg
ZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDogQWRkIGRlc3Ryb3kgZnVuY3Rpb25zIGZv
ciBFeGVjdXRhYmxlQmFzZSBhbmQgc3ViY2xhc3Nlcy4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChK
U0M6OkV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1
dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ry
b3kpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0Lgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBEaXR0by4gQWxzbyByZW1v
dmUgZ2xvYmFsIGRhdGEgZmlyc3QgYXJnIGZyb20gaXNKU0FycmF5LgorICAgICAgICAoSlNDOjpm
dW5jdGlvblByb3RvRnVuY0FwcGx5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5j
cHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6IFJl
bW92ZSBjYWxsIHRvIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyBzaW5jZSBpdCBubyAKKyAgICAg
ICAgbG9uZ2VyIGV4aXN0cy4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZ09uY2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6IFJlbW92ZSB2dGFibGVB
bmNob3IgZnVuY3Rpb24sIGFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LCAKKyAgICAgICAg
cmVtb3ZlIGZpcnN0IGFyZyBmcm9tIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2suCisgICAgICAgICogcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSB0byBjYWxsIH5KU0FycmF5
LiAgUmVwbGFjZSB2cHRyIGNoZWNrcyBpbiAKKyAgICAgICAgZGVzdHJ1Y3RvciB3aXRoIENsYXNz
SW5mbyBjaGVja3MuCisgICAgICAgIChKU0M6OkpTQXJyYXk6On5KU0FycmF5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6IFJl
bW92ZSBWUHRyU3RlYWxpbmdIYWNrLiAgUmVtb3ZlIGdsb2JhbERhdGEgYXJndW1lbnQgZnJvbSBp
c0pTQXJyYXkgCisgICAgICAgIGFuZCBjaGFuZ2UgdGhlbSB0byBjaGVjayB0aGUgQ2xhc3NJbmZv
IHJhdGhlciB0aGFuIHRoZSB2cHRycy4KKyAgICAgICAgKEpTQzo6aXNKU0FycmF5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1Y3RvciBh
c3NlcnQuIFJlbW92ZSBmaXJzdCBhcmcgZnJvbSBpc0pTQXJyYXkuCisgICAgICAgIChKU0M6OmJv
dW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBm
dW5jdGlvbiwgcmVwbGFjZSB2cHRyIGNoZWNrcyB3aXRoIENsYXNzSW5mbyBjaGVja3MuCisgICAg
ICAgIChKU0M6OkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpKU0J5
dGVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBSZW1v
dmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLgorICAgICAgICAoSlNDOjppc0pTQnl0ZUFycmF5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNz
ZXJ0LiAgQWRkIHN0YXRpYyBkZXN0cm95IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6IFJlbW92ZSBWUHRyU3RlYWxp
bmdIYWNrIGNvZGUuICBBZGQgZnVuY3Rpb24gZm9yIHJldHVybmluZyB0aGUgb2Zmc2V0IAorICAg
ICAgICBvZiB0aGUgQ2xhc3NJbmZvIHBvaW50ZXIgaW4gdGhlIG9iamVjdCBmb3IgdXNlIGJ5IHRo
ZSBKSVQuICBBZGQgdGhlIENsYXNzSW5mbyBwb2ludGVyIHRvIAorICAgICAgICB0aGUgSlNDZWxs
IGl0c2VsZiwgYW5kIGdyYWIgaXQgZnJvbSB0aGUgU3RydWN0dXJlLiAgUmVtb3ZlIHRoZSB2cHRy
IGFuZCBzZXRWUHRyIGZ1bmN0aW9ucywgCisgICAgICAgIGFzIHRoZXkgYXJlIG5vIGxvbmdlciB1
c2VkLiAgQWRkIGEgdmFsaWRhdGVkQ2xhc3NJbmZvIGZ1bmN0aW9uIHRvIEpTQ2VsbCBmb3IgYW55
IGNsaWVudHMgCisgICAgICAgIHRoYXQgd2FudCB0byB2ZXJpZnksIHdoaWxlIGluIERlYnVnIG1v
ZGUsIHRoYXQgdGhlIENsYXNzSW5mbyBjb250YWluZWQgaW4gdGhlIGNlbGwgaXMgdGhlIAorICAg
ICAgICBzYW1lIG9uZSBhcyB0aGF0IGNvbnRhaW5lZCBpbiB0aGUgU3RydWN0dXJlLiAgVGhpcyBp
c24ndCB1c2VkIHRvbyBvZnRlbiwgYmVjYXVzZSBtb3N0IG9mIAorICAgICAgICB0aGUgcGxhY2Vz
IHdoZXJlIHdlIGNvbXBhcmUgdGhlIENsYXNzSW5mbyB0byB0aGluZ3MgY2FuIGJlIGNhbGxlZCBk
dXJpbmcgZGVzdHJ1Y3Rpb24uICAKKyAgICAgICAgU2luY2UgdGhlIFN0cnVjdHVyZSBpcyB1bnJl
bGlhYmxlIGR1cmluZyB0aGUgcGhhc2Ugd2hlbiBkZXN0cnVjdG9ycyBhcmUgYmVpbmcgY2FsbGVk
LCAKKyAgICAgICAgd2UgY2FuJ3QgY2FsbCB2YWxpZGF0ZWRDbGFzc0luZm8uCisgICAgICAgIChK
U0M6OkpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDogUmVtb3ZlIFZQdHJTdGVhbGluZ0hhY2sgY29kZS4gIEFkZCBz
dGF0aWMgZGVzdHJveSwgcmVtb3ZlIHZ0YWJsZUFuY2hvciwgCisgICAgICAgIHJlbW92ZSBmaXJz
dCBhcmcgZnJvbSBjYWxsIHRvIGlzSlNTdHJpbmcuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6IAorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcDogUmVtb3ZlIGFsbCBWUHRyIHN0ZWFsaW5nIGNvZGUgYW5kIHN0b3JhZ2UsIGluY2x1
ZGluZyBzdG9yZVZQdHJzLCAKKyAgICAgICAgYXMgdGhlc2UgdnB0cnMgYXJlIG5vIGxvbmdlciBu
ZWVkZWQgaW4gdGhlIGNvZGViYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlEZXNjcmlwdG9yOjpUeXBlZEFycmF5RGVzY3JpcHRv
cik6IENoYW5nZWQgdGhlIFR5cGVkQXJyYXlEZXNjcmlwdG9yIHRvIHVzZSAKKyAgICAgICAgQ2xh
c3NJbmZvIHJhdGhlciB0aGFuIHRoZSB2cHRyLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwOiBBZGQgdHJpdmlhbCBkZXN0
cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOiBEaXR0by4gUmVtb3ZlIGZpcnN0
IGFyZyBmcm9tIGlzSlNBcnJheSBjYWxscy4KKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDogCisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQgZm9yIEpTT2JqZWN0LCBy
ZW1vdmUgdnRhYmxlQW5jaG9yIAorICAgICAgICBmcm9tIEpTTm9uRmluYWxPYmplY3QgYW5kIEpT
RmluYWxPYmplY3QsIGFkZCBzdGF0aWMgZGVzdHJveSBmb3IgSlNGaW5hbE9iamVjdCBhbmQgCisg
ICAgICAgIEpTTm9uRmluYWxPYmplY3QsIGFkZCBpc0pTRmluYWxPYmplY3QgdXRpbGl0eSBmdW5j
dGlvbiBzaW1pbGFyIHRvIGlzSlNBcnJheSwgcmVtb3ZlIGFsbCBWUHRyU3RlYWxpbmdIYWNrIGNv
ZGUuCisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTTm9uRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjppc0pTRmluYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6IEFkZCBz
dGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChK
U0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oOiBEaXR0by4gCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6IERpdHRvLiBSZW1vdmUgVlB0clN0ZWFsaW5nSGFjayBjb2RlLiBBbHNvIHJl
bW92ZSBmaXh1cFZQdHIgY29kZSwgCisgICAgICAgIHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIHRv
IGZpeHVwIHZwdHJzLgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6
anNOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmcpOgorICAgICAgICAo
SlNDOjpqc1N1YnN0cmluZzgpOgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAg
IChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZ0J1aWxkZXIpOgor
ICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuY3BwOiAKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydC4KKyAgICAgICAgKiBydW50aW1l
L01hdGhPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOiBSZW1vdmUgY2FsbHMgdG8gZml4dXBWUHRyLCByZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNT
dHJpbmcuCisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToK
KyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDog
QWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlc3Ryb3kpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBmb3IgUmVnRXhwQ29uc3RydWN0b3IgYW5kIFJl
Z0V4cE1hdGNoZXNBcnJheS4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDogQWRk
IHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlc3Ryb3kpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29w
ZUNoYWluLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDogRGl0dG8uIFJlbW92ZSB2dGFibGVB
bmNob3IuCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6IE1vdmUgSlNDZWxsOjpmaW5p
c2hDcmVhdGlvbiBhbmQgSlNDZWxsIGNvbnN0cnVjdG9yIGludG8gU3RydWN0dXJlLmggCisgICAg
ICAgIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdGhlIGZ1bGwgU3RydWN0dXJlIHR5cGUgdG8g
YWNjZXNzIHRoZSBDbGFzc0luZm8gdG8gc3RvcmUgaW4gdGhlIEpTQ2VsbC4KKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
ZENsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBBZGQgbmV3IGFzc2VydGlvbiBBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUiwgd2hpY2ggdXNlcyBjbGFuZ3MgCisgICAgICAgIGFiaWxpdHkgdG8gdGVs
bCB1cyB3aGVuIGEgY2xhc3MgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBXZSB3aWxsIHVzZSB0
aGlzIGFzc2VydCAKKyAgICAgICAgbW9yZSBpbiBmdXR1cmUgcGF0Y2hlcyBhcyB3ZSBtb3ZlIHRv
d2FyZCBoYXZpbmcgYWxsIEpTQyBvYmplY3RzIGJhY2tlZCBieSBHQyBtZW1vcnksIAorICAgICAg
ICB3aGljaCBtZWFucyBtb3ZpbmcgYXdheSBmcm9tIHVzaW5nIGRlc3RydWN0b3JzL2ZpbmFsaXpl
cnMuCisKIDIwMTEtMTItMTQgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB3aGl0ZXNwYWNlIGZyb20gSW5oZXJpdGVkUHJvcGVydHlTaGVldHMgYXR0cmli
dXRlcyBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggMjg1NzMxMWIxOTYwNzkwZGE4NTY3
YjBjOTRlNDNhZTc4YmQ2M2I4ZC4uNGJjMzMwY2JkOGExZDc1YmExZDcxYjE2YjZhZTdjOGMzNjc1
ZmYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTIt
MTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBE
ZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveSBm
dW5jdGlvbi4KKyAgICAgICAgKFVzZXJPYmplY3RJbXA6OmRlc3Ryb3kpOgorICAgICAgICAqIFVz
ZXJPYmplY3RJbXAuaDoKKwogMjAxMS0xMi0xNCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBKU19JTkxJTkUgYW5kIFdURl9JTkxJTkUgc2hvdWxkIGJl
IHZpc2libGUgZnJvbSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1YTgyYjAzYjcyODg3NWE3ODFm
NzYzNWIyNjU5ODA4NDUzODY5OC4uOGVmNDIxNmEwYzcxYzU3MGQ4NGIyNzc1ZDNkYjc1NThhMjUw
NGJjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDExLTEyLTEzICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBk
ZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgRG9pbmcgZXZlcnl0aGluZyBoZXJlIHRoYXQgd2Fz
IGRvbmUgdG8gdGhlIEpTQ2VsbCBoaWVyYXJjaHkgaW4gSmF2YVNjcmlwdENvcmUuIAorICAgICAg
ICBTZWUgdGhlIENoYW5nZUxvZyBmb3IgdGhpcyBjb21taXQgZm9yIGEgbW9yZSBpbi1kZXB0aCBk
ZXNjcmlwdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBBZGQvcmVtb3ZlIHN5bWJv
bHMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwOiBSZW1vdmUgZmlyc3QgYXJnIGZyb20gaXNKU0FycmF5IGNhbGwuCisgICAgICAgIChX
ZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0V2Via2l0TGluZURhc2gpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6IEFkZCB0cml2YWwgZGVzdHJ1
Y3RvciBhc3NlcnQgZm9yIERPTUNvbnN0cnVjdG9yT2JqZWN0IAorICAgICAgICBhbmQgRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kuICBBZGQgaW1wbGVtZW50YXRpb24gZm9yIAor
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0IHRoYXQgZGlzcGF0Y2hlcyB0byBkaWZmZXJl
bnQgZnVuY3Rpb25zIGluIHN1YmNsYXNzZXMgCisgICAgICAgIGRlcGVuZGluZyBvbiBvdXIgY3Vy
cmVudCBDbGFzc0luZm8uICBXZSBkbyB0aGlzIHNvIHRoYXQgd2UgY2FuIGdldCByaWQgb2YgdGhl
IAorICAgICAgICB2aXJ0dWFsLW5lc3Mgb2Ygc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmVjYXVz
ZSBhbnkgdmlydHVhbCBmdW5jdGlvbnMgd2lsbCB0aHJvdyAKKyAgICAgICAgb2ZmIHRoZSBsYXlv
dXQgb2YgdGhlIG9iamVjdCBhbmQgd2UnbGwgY3Jhc2ggYXQgcnVudGltZS4KKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHA6IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6ZGVzdHJveSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmg6IERlLXZpcnR1YWxpemUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDogQWRkIHN0YXRpYyBkZXN0cm95Lgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6ZGVzdHJveSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5jcHA6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0LgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOiBBZGQgYSBDbGFzc0luZm8gdG8gSlNET01XcmFw
cGVyIHNpbmNlIGl0IG5vdyBvdmVycmlkZXMgCisgICAgICAgIGEgTWV0aG9kVGFibGUgZnVuY3Rp
b24uIFJlbW92ZSB2dGFibGVBbmNob3IgdmlydHVhbCBmdW5jdGlvbi4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFz
c2VydC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOiBDaGFuZ2UgaW1w
bGVtZW50YXRpb24gb2YgcHVzaEV2ZW50SGFuZGxlclNjb3BlIHNvIHRoYXQgCisgICAgICAgIGl0
IGRpc3BhdGNoZXMgdG8gdGhlIGNvcnJlY3QgZnVuY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSAKKyAg
ICAgICAgaWRlbnRpdHkgb2YgdGhlIGNsYXNzIGFzIHNwZWNpZmllZCBieSB0aGUgQ2xhc3NJbmZv
LiAgCisgICAgICAgIFNlZSBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBmb3IgZXhwbGFuYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnB1c2hFdmVudEhh
bmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3Bw
OiBSZW1vdmUgZmlyc3QgYXJnIHRvIGlzSlNBcnJheSBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6
SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3ku
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRCYXNlOjpkZXN0cm95KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmg6IAorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmNwcDogUmVtb3ZlIGZpcnN0IGFyZyB0byBpc0pTQXJyYXkgY2Fs
bC4KKyAgICAgICAgKFdlYkNvcmU6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6IAorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjppc0FycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6Z2V0U3BhcnNlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBSZW1vdmUgdmly
dHVhbC1uZXNzIG9mIGFueSBjdXN0b20gcHVzaEV2ZW50SGFuZGxlclNjb3BlIChzZWUgCisgICAg
ICAgIEpTTm9kZUN1c3RvbTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlIGZvciBleHBsYW5hdGlvbiku
ICBSZW1vdmUgdmlydHVhbCB0b0Jvb2xlYW4gCisgICAgICAgIGZvciBhbnlib2R5IHdobyBtYXNx
dWVyYWRlcyBhcyB1bmRlZmluZWQsIHNpbmNlIG91ciBKU09iamVjdCBpbXBsZW1lbnRhdGlvbiBo
YW5kbGVzIAorICAgICAgICB0aGlzIGJhc2VkIG9uIHRoZSBUeXBlSW5mbyBpbiB0aGUgU3RydWN0
dXJlLiBBZGQgdHJpdmlhbCBkZXN0cnVjdG9yIGFzc2VydCBmb3IgYW55IAorICAgICAgICBjbGFz
cyBvdGhlciB0aGFuIERPTVdpbmRvdyBvciBXb3JrZXJDb250ZXh0cy4KKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOiBDaGFuZ2UgQ2xhc3NJbmZvIGRlZmluaXRpb25zIHRvIHVzZSBC
YXNlOjpzX2luZm8sIHNpbmNlIAorICAgICAgICB0eXBpbmcgdGhlIHBhcmVudCBjbGFzcyBtb3Jl
IHRoYW4gb25jZSBpcyBkdXBsaWNhdGlvbiBvZiBpbmZvcm1hdGlvbiBhbmQgaW5jcmVhc2VzIAor
ICAgICAgICB0aGUgbGlrZWxpaG9vZCBvZiBtaXN0YWtlcy4gIFBhc3MgQ2xhc3NJbmZvIHRvIFR5
cGVBcnJheURlc2NyaXB0b3JzIGluc3RlYWQgb2YgdnB0ci4gCisgICAgICAgIChHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbik6IEFkZCB0cml2aWFsIGRlc3RydWN0b3IgYXNzZXJ0IGZvciBh
bGwgZ2VuZXJhdGVkIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9i
amVjdC5jcHA6IFJlbW92ZSBlbXB0eSB2aXJ0dWFsIGRlc3RydWN0b3IuCisgICAgICAgICogYnJp
ZGdlL2MvQ1J1bnRpbWVPYmplY3QuaDogCisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YVJ1
bnRpbWVPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhUnVu
dGltZU9iamVjdC5oOiAKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5o
OiBEaXR0by4KKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbToKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDogQWRkIHN0YXRpYyBkZXN0cm95IGZv
ciBPYmpjRmFsbGJhY2tPYmplY3RJbXAuIERlLXZpcnR1YWxpemUgCisgICAgICAgIHRvQm9vbGVh
biBpbiB0aGUgc2hvcnQgdGVybS4gIE5lZWQgbG9uZ2VyIHRlcm0gZml4LgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNG
YWxsYmFja09iamVjdEltcDo6ZGVzdHJveSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRp
bWUuY3BwOiBBZGQgc3RhdGljIGRlc3Ryb3kgdG8gUXRSdW50aW1lTWV0aG9kLgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0aG9kOjpkZXN0cm95KToKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfcnVudGltZS5oOiBEZS12aXJ0dWFsaXplIH5RdFJ1bnRpbWVNZXRob2QuCisgICAg
ICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOiBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3Iu
IEFkZCBzdGF0aWMgZGVzdHJveS4KKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpkZXN0cm95
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX21ldGhvZC5jcHA6IFJlbW92ZSB2dGFibGVBbmNob3IuIEFkZCBzdGF0aWMgZGVzdHJv
eS4KKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6ZGVzdHJveSk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cDogQWRkIHN0YXRpYyBkZXN0cm95LgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9i
amVjdDo6ZGVzdHJveSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIw
MTEtMTItMTQgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgU2VlaW5nIGNyYXNoIGluIERSVCBhZnRlciBsb2FkaW5nLWlmcmFtZS1zZW5kcy1ub3RpZmlj
YXRpb24uaHRtbCBsYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYjEzMDYxN2Q5MTQyM2ZjOTYxYTk4
NjJlNzU4YjFmMzZlODk2MGFkMC4uYTdiZjMyNDhjZGM0YTM1YTMzNTMwY2JkNmY3YzkyYjc4MWU3
YTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTEzICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGUtdmlydHVh
bGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oOiBSZW1vdmUgZW1w
dHkgdmlydHVhbCBkZXN0cnVjdG9yLgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5UnVu
dGltZU9iamVjdC5tbToKKwogMjAxMS0xMi0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBNYWMgYnVpbGQgZml4IGFmdGVyIHIxMDI4NzQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNzBkYmRiYmEyYmQzOWRlM2JlNzE1OGU0ZjY2NjM4NDMxNjkwYmUyMy4uMmQ5NDk1MTQ3ZTli
M2NiNGJhZDliZGQxZDM2ZTNkMThiOWFmYzFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTEyLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRGUtdmlydHVhbGl6ZSBkZXN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmNwcDogQWRkIHRyaXZpYWwgZGVzdHJ1Y3RvciBhc3NlcnQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOiBBZGQgc3RhdGljIGRl
c3Ryb3kuCisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogd2lu
L1dlYktpdDIuZGVmOiBBZGQvcmVtb3ZlIG5lY2Vzc2FyeSBzeW1ib2xzLgorICAgICAgICAqIHdp
bi9XZWJLaXQyQ0ZMaXRlLmRlZjogRGl0dG8uCisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGpp
bmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBi
eSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjYwMWYzZWNhMzRk
ZTViMDAzNzMwMDc2M2U2YWIyNTdiZDE0YjQxMS4uMTM0OWU0ZjNmOGI3ZjVjZDIxM2NhYTJjODJk
NTI5ZmNiYWE3YWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja0NvbnN0cnVjdG9yLmNwcApAQCAtNTksNiArNTksMTEgQEAgSlNDYWxsYmFja0NvbnN0
cnVjdG9yOjp+SlNDYWxsYmFja0NvbnN0cnVjdG9yKCkKICAgICAgICAgSlNDbGFzc1JlbGVhc2Uo
bV9jbGFzcyk7CiB9CiAKK3ZvaWQgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNDYWxsYmFja0NvbnN0cnVjdG9yKj4oY2VsbCktPkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6fkpTQ2FsbGJhY2tDb25zdHJ1Y3RvcigpOworfQorCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0NhbGxiYWNrKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBleGVjLT5jYWxsZWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oCmluZGV4IGIzMjBhOTAxYzkwNDNjZmQwNzgyNzExYjUzMmQ4Mzg3NmViODJiOTAuLjQzYTcz
YzMxNDM3MjY4NTgzNDM4YWVjZDhkYmI1ZWM3M2RhMGI4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtNDIsNyArNDIsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAgICAgCi0gICAg
dmlydHVhbCB+SlNDYWxsYmFja0NvbnN0cnVjdG9yKCk7CisgICAgfkpTQ2FsbGJhY2tDb25zdHJ1
Y3RvcigpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgSlNDbGFzc1Jl
ZiBjbGFzc1JlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3M7IH0KICAgICBKU09iamVjdENhbGxB
c0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNr
OyB9CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKaW5kZXggZGQxMDZjY2VmMjNk
YmM3ZDVlMDNmZGFkNDc4OWFiOTY5ZDFkM2I2Yy4uM2ZiYzAwNDcwNjJlMTcxYTA5MzE3Mjk0OTEz
NjFlZjg2NWZhOTBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja0Z1bmN0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja0Z1bmN0aW9uKTsKK0FTU0VSVF9IQVNf
VFJJVklBTF9ERVNUUlVDVE9SKEpTQ2FsbGJhY2tGdW5jdGlvbik7CiAKIGNvbnN0IENsYXNzSW5m
byBKU0NhbGxiYWNrRnVuY3Rpb246OnNfaW5mbyA9IHsgIkNhbGxiYWNrRnVuY3Rpb24iLCAmSW50
ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJh
Y2tGdW5jdGlvbikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5jcHAKaW5kZXggZmI5ZDczMDI5YzYzMDIwYjg3OTViOWFmZmYxNzg1YjNhY2ZlYTU2
YS4uZWY5Y2I5MjVjMDkwNDExNzI1NjFhZTY0ODk4MmFiMDU1ODU1NWFiMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCkBAIC01MSw2ICs1MSwx
MiBAQCBTdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyAKIH0KIAordGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KK3ZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpLT5KU0NhbGxiYWNrT2Jq
ZWN0Ojp+SlNDYWxsYmFja09iamVjdCgpOworfQorCiB2b2lkIEpTQ2FsbGJhY2tPYmplY3REYXRh
OjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAg
IEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0YXRpY19jYXN0PEpTQ2xhc3NSZWY+KGNvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA5MWZm
NjI0OWRkZmY5MTBmYTVjMmIxMzVjZGQ1ZjYyOGQxYjIyYjE1Li5hNTFlZDNlMDFkZWI4ZWRkMjE2
MDk0YTAwODI0MjgzYWYzNzdjZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaApAQCAtMTc3LDYgKzE3Nyw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBiN2U5
MzY0OGZkYmE3NTNmOTlhZDVkNTZmNzIzZGM4NzRmY2I4ZjkxLi4yZTRjZTAyZTVhY2RmZDk0YTQx
MDNhNjk0NGVkMDMwZWFjNjM4NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKQEAgLTEyNSw2ICsxMjUsNyBAQCBfX1pOM0pTQzExSlNCeXRlQXJyYXkyNGdldE93
blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTgogX19a
TjNKU0MxMUpTQnl0ZUFycmF5MjVnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzExSlNCeXRlQXJy
YXkzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdK
U1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTZzX2lu
Zm9FCitfX1pOM0pTQzExSlNCeXRlQXJyYXk3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlND
MTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRl
QXJyYXlFCiBfX1pOM0pTQzExUGFyc2VyQXJlbmE1cmVzZXRFdgogX19aTjNKU0MxMWNoZWNrU3lu
dGF4RVBOU185RXhlY1N0YXRlRVJLTlNfMTBTb3VyY2VDb2RlRVBOU183SlNWYWx1ZUUKQEAgLTEz
NCwxMyArMTM1LDEwIEBAIF9fWk4zSlNDMTJEYXRlSW5zdGFuY2UxNGZpbmlzaENyZWF0aW9uRVJO
U18xMkpTR2xvYmFsRGF0YUVkCiBfX1pOM0pTQzEyRGF0ZUluc3RhbmNlNnNfaW5mb0UKIF9fWk4z
SlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUUKIF9fWk4z
SlNDMTJKU0dsb2JhbERhdGExMENsaWVudERhdGFEMkV2Ci1fX1pOM0pTQzEySlNHbG9iYWxEYXRh
MTFqc0FycmF5VlB0ckUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMmNyZWF0ZUxlYWtlZEVOU18x
NVRocmVhZFN0YWNrVHlwZUVOU184SGVhcFNpemVFCi1fX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJq
c1N0cmluZ1ZQdHJFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJzdG9wU2FtcGxpbmdFdgogX19a
TjNKU0MxMkpTR2xvYmFsRGF0YTEzc3RhcnRTYW1wbGluZ0V2CiBfX1pOM0pTQzEySlNHbG9iYWxE
YXRhMTRkdW1wU2FtcGxlRGF0YUVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDMTJKU0dsb2JhbERh
dGExNGpzRnVuY3Rpb25WUHRyRQogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0cmVzZXREYXRlQ2Fj
aGVFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0c2hhcmVkSW5zdGFuY2VFdgogX19aTjNKU0Mx
MkpTR2xvYmFsRGF0YTE1ZHVtcFJlZ0V4cFRyYWNlRXYKQEAgLTE3OCw2ICsxNzYsNyBAQCBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3QyNXNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGVFCiBfX1pOM0pT
QzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTRK
U0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3Q2c19pbmZvRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0N2Rlc3Ryb3lFUE5TXzZKU0NlbGxF
CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0TWFjaGluZVRocmVhZHMx
NmFkZEN1cnJlbnRUaHJlYWRFdgogX19aTjNKU0MxNE1hcmtTdGFja0FycmF5NmV4cGFuZEV2CkBA
IC0xOTQsMTQgKzE5MywxNSBAQCBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUAogX19aTjNKU0MxNVdl
YWtIYW5kbGVPd25lcjhmaW5hbGl6ZUVOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUHYKIF9fWk4z
SlNDMTVXZWFrSGFuZGxlT3duZXJEMkV2CiBfX1pOM0pTQzE1Y3JlYXRlVHlwZUVycm9yRVBOU185
RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCi1fX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjEydnRh
YmxlQW5jaG9yRXYKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTRmaW5pc2hDcmVhdGlvbkVS
TlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SW50ZXJuYWxG
dW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb242
c19pbmZvRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTRKU0dsb2JhbE9iamVj
dEVQTlNfOVN0cnVjdHVyZUUKK19fWk4zSlNDMTZKU05vbkZpbmFsT2JqZWN0N2Rlc3Ryb3lFUE5T
XzZKU0NlbGxFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5T
XzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNW
YXJpYWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJv
cGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blByb3Bl
cnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVB
cnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0N2Rl
c3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE2Y3JlYXRlUmFuZ2VFcnJvckVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0MxNnNsb3dWYWxpZGF0ZUNlbGxFUE5TXzE0SlNH
bG9iYWxPYmplY3RFCiBfX1pOM0pTQzE2c2xvd1ZhbGlkYXRlQ2VsbEVQTlNfNkpTQ2VsbEUKQEAg
LTIxMSw2ICsyMTEsNyBAQCBfX1pOM0pTQzE3SlNBUElWYWx1ZVdyYXBwZXI2c19pbmZvRQogX19a
TjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5M2FkZEVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pT
QzE3Y3JlYXRlU3ludGF4RXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4z
SlNDMThEZWJ1Z2dlckFjdGl2YXRpb24xNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0
YUVQTlNfOEpTT2JqZWN0RQorX19aTjNKU0MxOERlYnVnZ2VyQWN0aXZhdGlvbjZzX2luZm9FCiBf
X1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUk5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNK
U0MxOFByb3BlcnR5RGVzY3JpcHRvcjExc2V0V3JpdGFibGVFYgogX19aTjNKU0MxOFByb3BlcnR5
RGVzY3JpcHRvcjEyc2V0VW5kZWZpbmVkRXYKQEAgLTI2NSw2ICsyNjYsNyBAQCBfX1pOM0pTQzRZ
YXJyOWludGVycHJldEVQTlMwXzE1Qnl0ZWNvZGVQYXR0ZXJuRVJLTlNfN1VTdHJpbmdFampQaQog
X19aTjNKU0M0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVOU184Q2FsbFR5cGVFUktO
U184Q2FsbERhdGFFUzJfUktOU183QXJnTGlzdEUKIF9fWk4zSlNDNkpTQ2VsbDExZ2V0Q2FsbERh
dGFFUFMwX1JOU184Q2FsbERhdGFFCiBfX1pOM0pTQzZKU0NlbGwxNmdldENvbnN0cnVjdERhdGFF
UFMwX1JOU18xM0NvbnN0cnVjdERhdGFFCitfX1pOM0pTQzZKU0NlbGw3ZGVzdHJveUVQUzBfCiBf
X1pOM0pTQzZKU0NlbGw5Z2V0T2JqZWN0RXYKIF9fWk4zSlNDNkpTTG9jazEyRHJvcEFsbExvY2tz
QzFFTlNfMTRKU0xvY2tCZWhhdmlvckUKIF9fWk4zSlNDNkpTTG9jazEyRHJvcEFsbExvY2tzQzFF
UE5TXzlFeGVjU3RhdGVFCkBAIC0yNzYsMTMgKzI3OCwxMyBAQCBfX1pOM0pTQzZKU0xvY2s5bG9j
a0NvdW50RXYKIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2UmVn
RXhwNW1hdGNoRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRWlQTjNXVEY2VmVjdG9y
SWlMbTMyRUVFCiBfX1pOM0pTQzZSZWdFeHA2Y3JlYXRlRVJOU18xMkpTR2xvYmFsRGF0YUVSS05T
XzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NFCi1fX1pOM0pTQzZSZWdFeHBEMUV2CiBfX1pOM0pT
QzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQog
X19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRQogX19a
TjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN0Fy
Z0xpc3RFCiBfX1pOM0pTQzdKU0FycmF5MTVzZXRTdWJjbGFzc0RhdGFFUHYKIF9fWk4zSlNDN0pT
QXJyYXkyNWdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3Rh
dGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDN0pTQXJyYXk2c19pbmZvRQorX19aTjNK
U0M3SlNBcnJheTdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M3SlNBcnJheTlzZXRMZW5n
dGhFagogX19aTjNKU0M3SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVy
ZUUKIF9fWk4zSlNDN0pTQXJyYXlDMkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVF
CkBAIC0zMTMsNyArMzE1LDYgQEAgX19aTjNKU0M4SlNPYmplY3QxMmRlZmluZVNldHRlckVQUzBf
UE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUzFfagogX19aTjNKU0M4SlNPYmplY3Qx
Mmxvb2t1cEdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlND
OEpTT2JqZWN0MTJsb29rdXBTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
CiBfX1pOM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU182SlNDZWxsRVBOU185RXhlY1N0
YXRlRQotX19aTjNKU0M4SlNPYmplY3QxMnZ0YWJsZUFuY2hvckV2CiBfX1pOM0pTQzhKU09iamVj
dDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlND
OEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBTMF9Q
TlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9k
ZUUKQEAgLTMzMCw2ICszMzEsNyBAQCBfX1pOM0pTQzhKU09iamVjdDI0Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllcgogX19aTjNKU0M4
SlNPYmplY3QyNWdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFUE5TXzZKU0NlbGxFUE5TXzlFeGVj
U3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfNkpT
Q2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQ
dXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhKU09iamVjdDZzX2luZm9FCitfX1pOM0pTQzhKU09i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0M4SlNPYmplY3Q5Y2xhc3NOYW1lRVBL
UzBfCiBfX1pOM0pTQzhKU1N0cmluZzZzX2luZm9FCiBfX1pOM0pTQzhQcm9maWxlcjEzc3RvcFBy
b2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQpAQCAtMzUwLDcgKzM1Miw2IEBA
IF9fWk4zSlNDOVN0cnVjdHVyZTNnZXRFUk5TXzEySlNHbG9iYWxEYXRhRVBOM1dURjEwU3RyaW5n
SW1wbEVSalJQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOVN0cnVjdHVyZTQwYWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUVQUzBfUktOU18xMElkZW50aWZpZXJFalBOU182SlND
ZWxsRVJtCiBfX1pOM0pTQzlTdHJ1Y3R1cmU2c19pbmZvRQogX19aTjNKU0M5U3RydWN0dXJlQzFF
Uk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNf
OFR5cGVJbmZvRVBLTlNfOUNsYXNzSW5mb0UKLV9fWk4zSlNDOVN0cnVjdHVyZUQxRXYKIF9fWk4z
SlNDOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVOU18xM0NvbnN0cnVjdFR5
cGVFUktOU18xM0NvbnN0cnVjdERhdGFFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDZXFFUktOU183
VVN0cmluZ0VQS2MKIF9fWk4zSlNDZ3RFUktOU183VVN0cmluZ0VTMl8KQEAgLTYxOSwxNiArNjIw
LDcgQEAgX19aTkszV1RGNlN0cmluZzh0b0ludFB0ckVQYgogX19aTkszV1RGNlN0cmluZzh0b1VJ
bnQ2NEVQYgogX19aTkszV1RGNlN0cmluZzlzdWJzdHJpbmdFamoKIF9fWk5LM1dURjhDb2xsYXRv
cjdjb2xsYXRlRVBLdG1TMl9tCi1fX1pUVk4zSlNDMTJTdHJpbmdPYmplY3RFCi1fX1pUVk4zSlND
MTNKU0ZpbmFsT2JqZWN0RQotX19aVFZOM0pTQzE0SlNHbG9iYWxPYmplY3RFCi1fX1pUVk4zSlND
MTRTY29wZUNoYWluTm9kZUUKLV9fWlRWTjNKU0MxNUpTV3JhcHBlck9iamVjdEUKIF9fWlRWTjNK
U0MxNVdlYWtIYW5kbGVPd25lckUKLV9fWlRWTjNKU0MxNkludGVybmFsRnVuY3Rpb25FCi1fX1pU
Vk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0RQogX19aVFZOM0pTQzhEZWJ1Z2dlckUKLV9fWlRWTjNK
U0M4SlNPYmplY3RFCi1fX1pUVk4zSlNDOEpTU3RyaW5nRQogX2pzY29yZV9mYXN0bWFsbG9jX2lu
dHJvc3BlY3Rpb24KIF9rSlNDbGFzc0RlZmluaXRpb25FbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBhZGRmMzhmYmVhMzEw
OTUwNDBkYzg2MWE2ZTkxMDc0YjQ5ODJmMTMyLi5jYzQ4NDlhYzE2ODgwM2JlNmJmMzU1NDI3OTQ1
YTRjOTVmMzFiOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmRlZgpAQCAtMzMsMTEgKzMzLDkgQEAgRVhQT1JUUwogICAgID8/MURlYnVn
Z2VyQEpTQ0BAVUFFQFhaCiAgICAgPz8xRHJvcEFsbExvY2tzQEpTTG9ja0BKU0NAQFFBRUBYWgog
ICAgID8/MUpTR2xvYmFsRGF0YUBKU0NAQFFBRUBYWgotICAgID8/MUpTR2xvYmFsT2JqZWN0QEpT
Q0BAVUFFQFhaCi0gICAgPz8xSlNWYXJpYWJsZU9iamVjdEBKU0NAQFVBRUBYWgorICAgPz8xSlNH
bG9iYWxPYmplY3RASlNDQEBRQUVAWFoKICAgICA/PzFNdXRleEBXVEZAQFFBRUBYWgogICAgID8/
MVJlZkNvdW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRUBYWgotICAgID8/MVNjb3BlQ2hhaW5Ob2Rl
QEpTQ0BARUFFQFhaCiAgICAgPz8xU291cmNlUHJvdmlkZXJDYWNoZUBKU0NAQFFBRUBYWgogICAg
ID8/MVRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MVdURlRocmVhZERhdGFAV1RG
QEBRQUVAWFoKQEAgLTE1OCw2ICsxNTYsOSBAQCBFWFBPUlRTCiAgICAgP2Rlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRl
bnRpZmllckAyQEBaCiAgICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBTdHJ1Y3R1cmVA
SlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgog
ICAgID9kZXN0cm95QEhlYXBASlNDQEBRQUVYWFoKKyAgICA/ZGVzdHJveUBKU0J5dGVBcnJheUBK
U0NAQFNBWFBBVkpTQ2VsbEAyQEBaCisgICAgP2Rlc3Ryb3lASlNHbG9iYWxPYmplY3RASlNDQEBT
QVhQQVZKU0NlbGxAMkBAWgorICAgID9kZXN0cm95QEpTTm9uRmluYWxPYmplY3RASlNDQEBTQVhQ
QVZKU0NlbGxAMkBAWgogICAgID9kZXRhY2hARGVidWdnZXJASlNDQEBVQUVYUEFWSlNHbG9iYWxP
YmplY3RAMkBAWgogICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAgICA/ZGlkVGltZU91
dEBUaW1lb3V0Q2hlY2tlckBKU0NAQFFBRV9OUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTM2MSw5ICsz
NjIsNiBAQCBFWFBPUlRTCiAgICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxPYmplY3RASlNDQEBT
QVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3Zpc2l0Q2hpbGRyZW5ASlNH
bG9iYWxUaGlzQEpTQ0BAS0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID92
aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JA
MkBAWgotICAgID92dGFibGVBbmNob3JASW50ZXJuYWxGdW5jdGlvbkBKU0NAQEVBRVhYWgotICAg
ID92dGFibGVBbmNob3JASlNGaW5hbE9iamVjdEBKU0NAQEVBRVhYWgotICAgID92dGFibGVBbmNo
b3JASlNPYmplY3RASlNDQEBVQUVYWFoKICAgICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVYQUFWTXV0ZXhAMkBAWgogICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElQ
QVBBWEBaCiAgICAgP3dyaXRhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9OWFoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5jcHAKaW5kZXggMWUwM2NkMWZhOTY5ZjdhNmFlODE0Njg1MzFlOGRjOTZjYWRmZTNhYy4uODBi
ZTMxMGI1OTUzMDc4YzZmZGI2YzU0NjgyNzI1ZmM4Mjc5ZTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKQEAgLTMw
LDYgKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihEZWJ1Z2dlckFjdGl2YXRpb24pOworCitjb25zdCBDbGFzc0luZm8gRGVidWdnZXJB
Y3RpdmF0aW9uOjpzX2luZm8gPSB7ICJEZWJ1Z2dlckFjdGl2YXRpb24iLCAmQmFzZTo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERlYnVnZ2VyQWN0aXZhdGlvbikgfTsKKwogRGVi
dWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQogICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLmRlYnVn
Z2VyQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCA0NGQwOWExODA3OGM0
ZGZlMGY3YzcwM2NiMmE1NzYyMWEwOTYxYTY1Li42OGNjM2EzMWIyMThlMzgwZTZjY2JmZWNmMzBh
YzgxMWYyNTI2YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQWN0aXZhdGlvbi5oCkBAIC01Miw2ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
YmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAorICAgICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKwogICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA3MTM5
MDA2NjcyNDE1NDVlYmE2ZjlmMTMzMWZiYWYxYjk4NDBjMGFiLi5mZTc4ZDdmYWZjZDAxZDkzY2Y2
MDFmZjIzNDBlYjQxNDgxNGQxNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0
QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMyX3QgaW5kZXgs
CiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
IAotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkgeworICAgIGlmIChp
c0pTQXJyYXkoYmFzZVZhbHVlKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXko
YmFzZVZhbHVlKTsKICAgICAgICAgaWYgKGFycmF5LT5jYW5TZXRJbmRleChpbmRleCkpIHsKICAg
ICAgICAgICAgIGFycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaW5kZXgsIHZhbHVlKTsKQEAg
LTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMyX3QgaW5kZXgsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYm
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGluZGV4KSkgeworICAgIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaW5kZXgpKSB7CiAgICAgICAgIEpTQnl0ZUFycmF5KiBieXRlQXJyYXkgPSBh
c0J5dGVBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAvLyBGSVhNRTogdGhlIEpJVHN0dWIgdXNl
ZCB0byByZWxpbmsgdGhpcyB0byBhbiBvcHRpbWl6ZWQgZm9ybSEKICAgICAgICAgaWYgKHZhbHVl
LmlzSW50MzIoKSkgewpAQCAtMjY5LDE4ICsyNjksMTYgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWQKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgpCiB7Ci0gICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLQogICAgIC8vIEZJWE1FOiB0aGUgSklU
IHVzZWQgdG8gaGFuZGxlIHRoZXNlIGluIGNvbXBpbGVkIGNvZGUhCi0gICAgaWYgKGlzSlNBcnJh
eShnbG9iYWxEYXRhLCBiYXNlKSAmJiBhc0FycmF5KGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkp
CisgICAgaWYgKGlzSlNBcnJheShiYXNlKSAmJiBhc0FycmF5KGJhc2UpLT5jYW5HZXRJbmRleChp
bmRleCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheShiYXNlKS0+Z2V0
SW5kZXgoaW5kZXgpKTsKIAogICAgIC8vIEZJWE1FOiB0aGUgSklUc3R1YiB1c2VkIHRvIHJlbGlu
ayB0aGlzIHRvIGFuIG9wdGltaXplZCBmb3JtIQotICAgIGlmIChpc0pTU3RyaW5nKGdsb2JhbERh
dGEsIGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCisgICAgaWYg
KGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1N0cmluZyhiYXNlKS0+Z2V0SW5kZXgo
ZXhlYywgaW5kZXgpKTsKIAogICAgIC8vIEZJWE1FOiB0aGUgSklUc3R1YiB1c2VkIHRvIHJlbGlu
ayB0aGlzIHRvIGFuIG9wdGltaXplZCBmb3JtIQotICAgIGlmIChpc0pTQnl0ZUFycmF5KGdsb2Jh
bERhdGEsIGJhc2UpICYmIGFzQnl0ZUFycmF5KGJhc2UpLT5jYW5BY2Nlc3NJbmRleChpbmRleCkp
CisgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZSkgJiYgYXNCeXRlQXJyYXkoYmFzZSktPmNhbkFj
Y2Vzc0luZGV4KGluZGV4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc0J5dGVB
cnJheShiYXNlKS0+Z2V0SW5kZXgoZXhlYywgaW5kZXgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQoZXhlYywgaW5kZXgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCmluZGV4IDJiNTY4MDgwNGFjODlhNjg1ZDA4NWUxN2Q4
MzFiNTM0NThmYjFjZDEuLmM0NGU4YjczODkwY2ZiZmQ3ZmJlZjY4MjgzMTQxZjNkZjBmYjgzODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOwogICAgIAotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFz
ZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkg
eworICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8uYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8udmFsdWVUYWdHUFIpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hl
R2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlm
aWVyCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNh
c2VzOwogICAgICAgICAKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihnbG9iYWxEYXRhLT5qc0FycmF5
VlB0cikpKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0
aCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggOWJiZmQzM2FlMjVkMmFjNTgzNmVmNGJhOTRkZGIyODI1NmE1
ZWY5ZC4uMDIwZjEyYzZiNWFjYWRkZmVkYjNlNWI5MDc2YzY5MjViNTM0OWYwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTgwMyw3
ICs4MDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVEb3VibGVCcmFu
Y2goTm9kZSYgbm9kZSwgTm9kZUluZGV4IGJyYW5jaE5vZAogICAgICAgICBhZGRCcmFuY2gobV9q
aXQuanVtcCgpLCBub3RUYWtlbik7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5k
ZXgsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUs
IE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQ
cmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCiB7CiAgICAgTm9kZSYgYnJhbmNoTm9k
ZSA9IGF0KGJyYW5jaE5vZGVJbmRleCk7CiAgICAgQmxvY2tJbmRleCB0YWtlbiA9IGJyYW5jaE5v
ZGUudGFrZW5CbG9ja0luZGV4KCk7CkBAIC04MjUsOSArODI1LDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgTm9kZUluZGV4
IGJyYW5jaE4KICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIAogICAgIGlmICgh
cHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQot
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIGlmICghcHJlZGljdGlvbkNoZWNr
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKQotICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoY2xhc3NJbmZvKSkpOwogICAgIAogICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hQdHIoY29u
ZGl0aW9uLCBvcDFHUFIsIG9wMkdQUiksIHRha2VuKTsKICAgICBpZiAobm90VGFrZW4gIT0gKG1f
YmxvY2sgKyAxKSkKQEAgLTg4NywxMSArODg3LDExIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlJiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9kZS5j
aGlsZDIoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYgTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUu
Y2hpbGQyKCkpKSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHko
bm9kZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RW
UHRyLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNo
aWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgfSBlbHNl
IGlmIChub2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheShh
dChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7Ci0gICAgICAgICAgICBjb21w
aWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmds
b2JhbERhdGEoKS0+anNBcnJheVZQdHIsIGlzQXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
IGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgJkpT
QXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOwogICAgICAgICAgICAgdXNlKG5vZGUu
Y2hpbGQxKCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICB9IGVs
c2UKQEAgLTEwNjcsMTIgKzEwNjcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1
bWVudFR5cGVzKCkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5
dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5
VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19p
bmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCB0ZW1wLmdwcigpKTsKQEAgLTEwODIsNDIgKzEwODIsNDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKS5t
X3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNl
IGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3By
KCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQxNkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNz
SW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJB
cnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1Vp
bnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5
RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBl
KSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURl
c2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQzMkFy
cmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNj
cmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURl
c2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0NjRB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURl
c2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsK
ICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKQpAQCAtMTEyNywxMyArMTEyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVj
a0FyZ3VtZW50VHlwZXMoKQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRp
Y3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVh
bFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpz
Qnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVB
cnJheTo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKICAgICAgICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlQ
cmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CkBAIC0xMTQxLDQ5ICsxMTQxLDQ5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0
cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVz
Y3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzSW50MzJBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVh
bFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJy
YXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5
cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0
b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwogICAgICAg
ICB9ICBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV92
cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAgZWxz
ZSBpZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9h
dDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIH0gICBlbHNlIGlm
IChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRB
cnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfSAKICNlbmRpZgogICAg
IH0KQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbEZvckJ5dGVBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOCiAgICAgTm9k
ZUluZGV4IHZhbHVlSW5kZXggPSBub2RlLmNoaWxkMygpOwogICAgIAogICAgIGlmICghaXNCeXRl
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShiYXNlSW5kZXgpLm1fdHlwZSkpCi0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2Up
LCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAg
ICBHUFJUZW1wb3JhcnkgdmFsdWU7CiAgICAgR1BSUmVnIHZhbHVlR1BSOwogCkBAIC0xNjQ1LDcg
KzE2NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0
aChjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzYwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgCiAgICAgaWYgKG5lZWRzU3BlY3VsYXRpb25DaGVjaykKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykp
KTsKICAgICAKICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgZGVzY3JpcHRvci5tX2xlbmd0aE9mZnNldCksIHJlc3VsdEdQUik7CiAgICAgCkBAIC0xNzA4
LDcgKzE3MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJgogICAgIE5vZGVJbmRleCB2YWx1
ZUluZGV4ID0gbm9kZS5jaGlsZDMoKTsKICAgICAKICAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJl
bWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRv
ci5tX3ZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2Ny
aXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHZhbHVlOwogICAgIEdQUlJl
ZyB2YWx1ZUdQUjsKICAgICAKQEAgLTE4MzEsNyArMTgzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVz
Y3JpcHRvCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlSW5k
ZXgpOwogICAgIAogICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJy
YXlUeXBlU3BlY0NoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChi
YXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykp
KTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIApAQCAtMjIwOCw5
ICsyMjA4LDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICBlbHNlIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkp
KSkKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91YmxlQ29uZGl0aW9uKTsK
ICAgICBlbHNlIGlmIChub2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVjdWxh
dGVGaW5hbE9iamVjdChhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKQotICAg
ICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0Zp
bmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICBjb21waWxl
T2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVj
dFByZWRpY3Rpb24pOwogICAgIGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigp
KSkpCi0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRh
KCktPmpzQXJyYXlWUHRyLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7CiAg
ICAgZWxzZQogICAgICAgICBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZShub2RlLCBj
b25kaXRpb24sIG9wZXJhdGlvbik7CiAgICAgCkBAIC0yMzQyLDI2ICsyMzQyLDI2IEBAIGJvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlJiBub2RlKQogICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5j
aGlsZDIoKSkpKSB7CiAgICAgICAgIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXggPSBkZXRlY3RQ
ZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoTm9kZUluZGV4ICE9IE5vTm9kZSkg
ewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNo
Tm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCBpc0ZpbmFs
T2JqZWN0UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVh
bGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlzRmlu
YWxPYmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIG1fY29tcGlsZUluZGV4
ID0gYnJhbmNoTm9kZUluZGV4OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
LSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsIG1faml0Lmdsb2JhbERhdGEoKS0+
anNGaW5hbE9iamVjdFZQdHIsIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAgY29t
cGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlzRmluYWxP
YmplY3RQcmVkaWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5v
ZGUuY2hpbGQyKCkpKSkgewogICAgICAgICBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0gZGV0
ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaE5vZGVJbmRleCAhPSBOb05v
ZGUpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJy
YW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgaXNBcnJheVBy
ZWRpY3Rpb24pOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9k
ZSwgYnJhbmNoTm9kZUluZGV4LCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7
CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9kZS5j
aGlsZDIoKSk7CiAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRleDsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0FycmF5
UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJh
eTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgCkBAIC0yMzg3LDcgKzIzODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlJiBub2RlKQogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGlj
dGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VS
ZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpz
X2luZm8pKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc3RvcmFnZVJlZyk7CiAgICAg
ICAgIApAQCAtMjM5Nyw1MSArMjM5Nyw1MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlJiBub2RlKQogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFP
ZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpT
Qnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNCeXRlQXJyYXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgc3Rv
cmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnQ4QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpOwogICAg
ICAgICBpZiAoIWlzSW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0
cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwg
c3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVJbnQxNkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCk7
CiAgICAgICAgIGlmICghaXNJbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9y
Lm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zm
c2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91
bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlw
dG9yKCk7CiAgICAgICAgIGlmICghaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNj
cmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9y
YWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJh
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlE
ZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNVaW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3Iu
bV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5
cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
MTZBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc1VpbnQxNkFycmF5UHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRl
c2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7CiAgICAgICAg
IGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc1VpbnQzMkFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBl
bHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkg
ewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0
Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlz
RmxvYXQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlw
dG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJl
Zyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9h
dDY0QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpOwogICAg
ICAgICBpZiAoIWlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1f
dnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0
KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5Ojpz
X2luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgfQog
ICAgIHN0b3JhZ2VSZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDZhZDhlYjA0YThi
YjlmYTcyMjM5MDQxYzg4NmY3YjY1MjkyY2M0ZmQuLjBjMTYzMjcwMTczMDQ1YTE0N2UzODU3NzA3
MWU3ZTQxY2Y4NTU4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTE5NTAsMTIgKzE5NTAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNv
bXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VK
Sik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKE5vZGUmLCBOb2RlSW5k
ZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAg
ICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSYsIE5vZGVJbmRleCBicmFu
Y2hOb2RlSW5kZXgsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwotICAgIHZvaWQgY29t
cGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5k
ZXgsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGVja2VyKTsKLSAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShOb2RlJiwgdm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZWNrZXIpOworICAgIHZv
aWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJbmRleCBicmFuY2hO
b2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyosIFByZWRpY3Rpb25DaGVja2VyKTsKKyAgICB2b2lk
IGNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiwgY29uc3QgQ2xhc3NJbmZvKiwgUHJlZGljdGlv
bkNoZWNrZXIpOwogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKE5vZGUmKTsKLSAgICB2b2lkIGNv
bXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggdmFsdWUsIHZvaWQqIHZwdHIs
IGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOworICAgIHZvaWQgY29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KE5vZGVJbmRleCB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZvKiwgYm9vbCBuZWVk
U3BlY3VsYXRpb25DaGVjayk7CiAgICAgdm9pZCBjb21waWxlTG9naWNhbE5vdChOb2RlJik7Ci0g
ICAgdm9pZCBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggdmFsdWUsIEJsb2NrSW5k
ZXggdGFrZW4sIEJsb2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1
bGF0aW9uQ2hlY2spOworICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4
IHZhbHVlLCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCBjb25zdCBDbGFz
c0luZm8qLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKICAgICB2b2lkIGVtaXRCcmFuY2go
Tm9kZSYpOwogICAgIAogICAgIHZvaWQgY29tcGlsZUludGVnZXJDb21wYXJlKE5vZGUmLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0yMDExLDggKzIwMTEsOCBAQCBw
cml2YXRlOgogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiksIHNjcmF0Y2hHUFIpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCAmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsKICAgICAgICAgCi0gICAgICAgIC8vIEluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHZ0YWJsZQotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RW
UHRyKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSKSk7CisgICAgICAgIC8vIElu
aXRpYWxpemUgdGhlIG9iamVjdCdzIGNsYXNzSW5mbyBwb2ludGVyCisgICAgICAgIG1faml0LnN0
b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8pLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdz
IGluaGVyaXRvcklELgogICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA3NWYxZDVkN2YzZjZmNDY4
ZTA5MWYyMzcxNWJlMjJlNzAyYTJmYTc2Li4yNTVmZWM0ZWFiMGMxYWM5NzYyN2FkZmZmNzE2Nzk2
NmI4NzczZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9wZXJhbmQmIG9wLCBG
UFJSZWcgcmVzCiAgICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rp
b25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJl
ZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CkBAIC0xNzIxLDkgKzE3MjEsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCogdnB0ciwg
UHJlZGljdGlvbkNoZQogICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9h
ZC5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsK
ICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIoKSku
bV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUu
Y2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgbV9qaXQubW92ZShJbW0zMigxKSwg
cmVzdWx0UGF5bG9hZEdQUik7CkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSYgbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUlu
ZGV4IG5vZGVJbmRleCwgdm9pZCogdnB0ciwgYm9vbCBuZWVkU3BlY3VsYXRpb25DaGVjaykKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5k
ZXggbm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9vbCBuZWVkU3BlY3Vs
YXRpb25DaGVjaykKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlSW5kZXgp
OwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAtMTc5Myw3ICsxNzkz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KE5vZGVJbmRleCBub2RlSW5kZXgsIHZvaWQqIHYKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB2
YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICBpZiAobmVl
ZFNwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVQYXlsb2FkR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikp
KTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRh
Z0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRH
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihjbGFzc0luZm8pKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgCkBAIC0xODIyLDExICsxODIyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVMb2dpY2FsTm90KE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigp
KSB7Ci0gICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgp
LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCAhaXNGaW5hbE9iamVjdE9y
T3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsK
KyAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZK
U0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3Ro
ZXIoKSkgewotICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGls
ZDEoKSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0ciwgIWlzQXJyYXlPck90aGVyUHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAg
IGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNBcnJheTo6
c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CkBAIC0xODcxLDcgKzE4NzEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQog
ICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRP
YmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrZW4s
IEJsb2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hl
Y2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5k
ZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9vbCBuZWVkU3BlY3VsYXRpb25DaGVjaykKIHsKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlSW5kZXgpOwogICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwpAQCAtMTg4MSw3ICsxODgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRl
eCB0YWsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICBpZiAobmVlZFNwZWN1bGF0aW9uQ2hlY2spCi0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAg
YWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgdGFrZW4pOwogICAgIAogICAgIG5vdENlbGwubGluaygm
bV9qaXQpOwpAQCAtMTkyMSw5ICsxOTIxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJy
YW5jaChOb2RlJiBub2RlKQogCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAg
ICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0
T3JPdGhlcigpKSB7Ci0gICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQx
KCksIHRha2VuLCBub3RUYWtlbiwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0
ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUu
Y2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmlu
YWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVBcnJheU9yT3RoZXIoKSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2Rl
LmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQ
dHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxk
MSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0g
ZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAg
ICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewog
ICAgICAgICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsKQEAgLTIwOTgsMTQgKzIwOTgsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAgICAgICAgICAgIGlm
ICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNl
bGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxv
Y2FsKCkpKTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5j
aGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwog
ICAgICAgICAgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJy
YXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgICAgICBu
b1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVh
blByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKQEAgLTI2NzcsNyArMjY3Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJS
ZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNB
cnJheTo6c19pbmZvKSkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAgICAgICAgIH0KIApAQCAtMjc5
Niw3ICsyNzk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFuZCB0aGF0IHByb3BlcnR5
IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JMZW5ndGgpLgogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0eXBlIGFycmF5LCB3ZSBj
YW4gc2tpcCB0aGUgY2hlY2suCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwog
CiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHByb3BlcnR5LnVzZSgpOwpAQCAtMjk0MCw3
ICsyOTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVUYWdHUFIsIG5vZGUuY2hpbGQyKCksIFdy
aXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BS
KTsKIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2Jh
bERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlT
dG9yYWdlLCBtX2xlbmd0aCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTI5ODYsNyArMjk4Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BS
UmVnIHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdwcigpOwogICAgICAgICAKICAg
ICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3Jh
Z2VPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwg
bV9sZW5ndGgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTQ4LDcgKzMxNDgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgYWxyZWFkeVByaW1pdGl2ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYWxyZWFkeVByaW1pdGl2ZS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkp
OwotICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQ
UiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNT
dHJpbmdWUHRyKSkpOworICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSwg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIp
OwpAQCAtMzI2OSw3ICszMjY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFsdWVHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRD
b21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHRoaXNW
YWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHRoaXNWYWx1ZUdQUiwgcmVz
dWx0R1BSKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRl
eCk7CkBAIC0zMzE0LDcgKzMzMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIC8vIGRvIHRoZSBzbG93IChzdHJ1Y3R1cmUtYmFzZWQpIGNoZWNr
LgogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmpl
Y3QoKSkgewogICAgICAgICAgICAgaWYgKCFpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHByb3RvR1BSKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9HUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyKSkpOworICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwocHJvdG9HUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0Zp
bmFsT2JqZWN0OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQo
bV9qaXQuYnJhbmNoOChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKSk7CkBAIC0zNDg2LDcgKzM0ODYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQXJy
YXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpT
QXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVz
dWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgcmVzdWx0
R1BSKTsKQEAgLTM1MDUsNyArMzUwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAgICAgCiAgICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgICAgICAK
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
U3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKIApAQCAtMzUyMSw3ICszNTIx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFp
c0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVB
cnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoJkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQnl0ZUFycmF5Ojpv
ZmZzZXRPZlN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSwg
cmVzdWx0R1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IDk3YjUxMmFlNDYwZTNiMTA5MDY3MGIzMDExNDcxMmI0MWVhZjJj
ODYuLmQ3ODc4NmUyNjNmYTFhY2M0OWFjNzAxOTMwZmVjM2ZhNmVmOGRjYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTcz
Nyw3ICsxNzM3LDcgQEAgSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRU
b0RvdWJsZShHUFJSZWcgdmFsdWUsIEZQUlJlZyByZXN1bHQsIEcKICAgICByZXR1cm4gbm90TnVt
YmVyOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9k
ZSYgbm9kZSwgdm9pZCogdnB0ciwgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hl
Y2spCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKQEAg
LTE3NDgsOSArMTc0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVh
bGl0eShOb2RlJiBub2RlLCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hlCiAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICBpZiAoIXByZWRp
Y3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCBub2RlLmNo
aWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2
cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgbV9qaXQubW92
ZShJbW0zMihWYWx1ZVRydWUpLCByZXN1bHRHUFIpOwpAQCAtMTgwOCw3ICsxODA4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUmIG5vZGUpCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5k
ZXgsIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4IG5vZGVJbmRl
eCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2sp
CiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMTgxNyw3ICsxODE3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBub2RlSW5k
ZXgsIHZvaWQgKnYKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwog
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFs
c2UpKSwgcmVzdWx0R1BSKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQu
anVtcCgpOwogICAgIApAQCAtMTg0OCwxMSArMTg0OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3Ro
ZXIoKSkgewotICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGls
ZDEoKSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgIWlzRmluYWxPYmpl
Y3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSk7CisgICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgp
LCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlP
ck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUu
Y2hpbGQxKCksIG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsICFpc0FycmF5T3JPdGhl
clByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAg
ICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJy
YXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewpAQCAtMTkxMiw3ICsx
OTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9k
ZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3Jt
YXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgs
IEJsb2NrSW5kZXggdGFrZW4sIEJsb2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wg
bmVlZFNwZWN1bGF0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JP
dGhlckJyYW5jaChOb2RlSW5kZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0lu
ZGV4IG5vdFRha2VuLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9vbCBuZWVkU3BlY3Vs
YXRpb25DaGVjaykKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlSW5kZXgp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMTkyMSw3ICsxOTIxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5v
ZGVJbmRleCwgQmxvY2tJbmRleCB0YWsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFs
dWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG5lZWRTcGVjdWxhdGlv
bkNoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xh
c3NJbmZvKSkpOwogICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCksIHRha2VuKTsKICAgICAKICAg
ICBub3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTE5NjEsOSArMTk2MSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIG5vUmVz
dWx0KG1fY29tcGlsZUluZGV4KTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNo
b3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGVtaXRPYmplY3RP
ck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgbV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGVtaXRP
YmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmlu
YWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgfSBlbHNlIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewotICAgICAgICBlbWl0
T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0
Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0
T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0FycmF5Ojpz
X2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsK
QEAgLTIxMzEsMTQgKzIxMzEsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdw
cigpOwogICAgICAgICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkp
KTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEo
KSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAg
ICAgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhj
ZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGNlbGxHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkp
KTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKQEAgLTI2
ODAsNyArMjY4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICAgICAg
Ly8gRklYTUU6IEluIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSBzdWJzZXF1ZW50IGJ5X3ZhbCBhY2Nl
c3NlcyB0byB0aGUgc2FtZSBiYXNlIGl0IG1pZ2h0IGhlbHAgdG8gY2FjaGUKQEAgLTI3OTEsNyAr
Mjc5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgLy8gQ2hlY2sgdGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBj
b250YWluZWQgd2l0aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8g
SWYgd2UgaGF2ZSBwcmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNr
aXAgdGhlIGNoZWNrLgogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBwcm9w
ZXJ0eS51c2UoKTsKQEAgLTI5MzUsNyArMjkzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BS
LCBub2RlLmNoaWxkMigpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQ
Uiwgc3RvcmFnZUxlbmd0aEdQUik7CiAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VP
ZmZzZXQoKSksIHN0b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9s
ZW5ndGgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0yOTc4LDcgKzI5NzgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdl
TGVuZ3RoR1BSID0gc3RvcmFnZUxlbmd0aC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICgh
aXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAg
ICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRP
RihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzEyMSw3
ICszMTIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGFscmVhZHlQcmltaXRpdmU7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0R1BSLCBvcDFHUFIpOwpAQCAt
MzIzMSw3ICszMjMxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKCFpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlz
VmFsdWVHUFIpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzU3RyaW5nVlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQ
UiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5t
b3ZlKHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIApAQCAtMzI3NSw3ICsz
Mjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAvLyBkbyB0aGUgc2xvdyAoc3RydWN0dXJlLWJhc2VkKSBjaGVjay4KICAgICAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAg
ICAgIGlmICghaXNGaW5hbE9iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhwcm90b0dQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BS
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0Zp
bmFsT2JqZWN0VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKHByb3RvR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9H
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNGaW5hbE9iamVjdDo6c19pbmZvKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOwpAQCAtMzQzOCw3
ICszNDM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAgICAgICAg
aWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZT
RVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHJlc3VsdEdQUik7CkBAIC0zNDU3LDcgKzM0
NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAo
IWlzU3RyaW5nUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAg
ICAgICAgCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CiAKQEAgLTM0NzMs
NyArMzQ3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAg
IGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRy
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6
c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCByZXN1
bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDA2YzBhZmRkM2VmNGQxMDgyMWIxMDZiYzIzYjczYmFm
MWEwNjc2YzAuLjYxZWJhMDhhNDljNjZmZTkyMzYzYzUwN2E2MzE5Yzk3ZDhjNzE4OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgSGVhcDo6SGVh
cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhlYXBTaXplKQogICAgICwgbV9h
Y3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fbWFjaGluZVRocmVhZHModGhpcykKICAgICAsIG1fc2hhcmVkRGF0YShnbG9iYWxE
YXRhKQotICAgICwgbV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEsIGdsb2JhbERhdGEtPmpzQXJy
YXlWUHRyLCBnbG9iYWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciwgZ2xvYmFsRGF0YS0+anNTdHJp
bmdWUHRyKQorICAgICwgbV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEpCiAgICAgLCBtX2hhbmRs
ZUhlYXAoZ2xvYmFsRGF0YSkKICAgICAsIG1faXNTYWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwg
bV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAppbmRleCAzZjRmZGE3NmNjNGUzNzFmNzRkNmRjYzczNWM5YjkzODQ2M2VmOWQ1Li4y
ODljNTQxMmY5NTE5YjAxMmZiNzdkMTY0OWZlYTRlZmNmZTNiZGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE1hcmtT
dGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20oTWFya1N0YWNrQXJyYXkmIG90aGVyKQogdm9p
ZCBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFpbigpCiB7CiAgICAg
V1RGOjpyZWdpc3RlckdDVGhyZWFkKCk7Ci0gICAgU2xvdFZpc2l0b3Igc2xvdFZpc2l0b3IoKnRo
aXMsIG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIsIG1fZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVj
dFZQdHIsIG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKTsKKyAgICBTbG90VmlzaXRvciBzbG90
VmlzaXRvcigqdGhpcyk7CiAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHNsb3RWaXNp
dG9yKTsKICAgICBzbG90VmlzaXRvci5kcmFpbkZyb21TaGFyZWQoU2xvdFZpc2l0b3I6OlNsYXZl
RHJhaW4pOwogfQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoQ29u
c2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzKQogICAgICAgICBpbnRlcm5hbEFwcGVu
ZChyb290c1tpXSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgSlNDZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFs
T2JqZWN0VlB0ciwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0cikKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvciwg
Y29uc3QgSlNDZWxsKiBjZWxsKQogewogI2lmIEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcp
CiAgICAgbV92aXNpdGVkVHlwZUNvdW50cy5jb3VudChjZWxsKTsKQEAgLTMwMiwxNyArMzAyLDE3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgSlNDZWxsKiBjZWxsCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQo
Y2VsbCkpOwogCi0gICAgaWYgKGNlbGwtPnZwdHIoKSA9PSBqc1N0cmluZ1ZQdHIpIHsKKyAgICBp
ZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihj
b25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChjZWxsLT52cHRyKCkgPT0ganNGaW5hbE9iamVjdFZQdHIpIHsKKyAgICBp
ZiAoaXNKU0ZpbmFsT2JqZWN0KGNlbGwpKSB7CiAgICAgICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGNlbGwtPnZwdHIoKSA9PSBqc0FycmF5VlB0cikgeworICAgIGlm
IChpc0pTQXJyYXkoY2VsbCkpIHsKICAgICAgICAgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihjb25z
dF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTMzOCwxNiArMzM4LDEyIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKIHsKICAgICBB
U1NFUlQobV9pc0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICB2b2lkKiBqc0ZpbmFsT2JqZWN0
VlB0ciA9IG1fanNGaW5hbE9iamVjdFZQdHI7Ci0gICAgdm9pZCoganNBcnJheVZQdHIgPSBtX2pz
QXJyYXlWUHRyOwotICAgIHZvaWQqIGpzU3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRyOwotCiAj
aWYgRU5BQkxFKFBBUkFMTEVMX0dDKQogICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFy
a2VycyA+IDEpIHsKICAgICAgICAgd2hpbGUgKCFtX3N0YWNrLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgbV9zdGFjay5yZWZpbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY291bnRk
b3duID0gSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOyBt
X3N0YWNrLmNhblJlbW92ZUxhc3QoKSAmJiBjb3VudGRvd24tLTspCi0gICAgICAgICAgICAgICAg
dmlzaXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVMYXN0KCksIGpzRmluYWxPYmplY3RW
UHRyLCBqc0FycmF5VlB0ciwganNTdHJpbmdWUHRyKTsKKyAgICAgICAgICAgICAgICB2aXNpdENo
aWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSk7CiAgICAgICAgICAgICBkb25hdGVL
bm93blBhcmFsbGVsKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNTksNyArMzU1LDcgQEAg
dm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogICAgIHdoaWxlICghbV9zdGFjay5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV9zdGFjay5yZWZpbGwoKTsKICAgICAgICAgd2hpbGUgKG1fc3RhY2suY2Fu
UmVtb3ZlTGFzdCgpKQotICAgICAgICAgICAgdmlzaXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5y
ZW1vdmVMYXN0KCksIGpzRmluYWxPYmplY3RWUHRyLCBqc0FycmF5VlB0ciwganNTdHJpbmdWUHRy
KTsKKyAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3ZlTGFzdCgp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXgg
YzUwODAxOTQ4ODcwMTljOWE4Y2Q0OGIzNzM3NzZkOGE4Zjk3OGRhNy4uMDNkZWVhYjg3OWJkMjEy
NzNmYjAxYjRkNzM4MTRlOWExMjBjYmU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEhlYXBSb290VmlzaXRvcjsgLy8gQWxsb3dlZCB0byBtYXJrIGEgSlNWYWx1ZSog
b3IgSlNDZWxsKiogZGlyZWN0bHkuCiAKICAgICBwdWJsaWM6Ci0gICAgICAgIE1hcmtTdGFjayhN
YXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJiwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmlu
YWxPYmplY3RWUHRyLCB2b2lkKiBqc1N0cmluZ1ZQdHIpOworICAgICAgICBNYXJrU3RhY2soTWFy
a1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYpOwogICAgICAgICB+TWFya1N0YWNrKCk7CiAKICAgICAg
ICAgdm9pZCBhcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmKTsKQEAgLTI2Nyw5ICsyNjcsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTWFya1N0YWNrQXJy
YXkgbV9zdGFjazsKLSAgICAgICAgdm9pZCogbV9qc0FycmF5VlB0cjsKLSAgICAgICAgdm9pZCog
bV9qc0ZpbmFsT2JqZWN0VlB0cjsKLSAgICAgICAgdm9pZCogbV9qc1N0cmluZ1ZQdHI7CiAgICAg
ICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7IC8vIEhhbmRsZS1vd25pbmcgZGF0YSBz
dHJ1Y3R1cmVzIG5vdCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KICAgICAgICAg
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMjg2LDExICsyODMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgbV9zaGFyZWQ7CiAgICAgfTsK
IAotICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhJiBzaGFyZWQsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciwg
dm9pZCoganNTdHJpbmdWUHRyKQorICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJr
U3RhY2tUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCiAgICAgICAgIDogbV9zdGFjayhzaGFyZWQu
bV9zZWdtZW50QWxsb2NhdG9yKQotICAgICAgICAsIG1fanNBcnJheVZQdHIoanNBcnJheVZQdHIp
Ci0gICAgICAgICwgbV9qc0ZpbmFsT2JqZWN0VlB0cihqc0ZpbmFsT2JqZWN0VlB0cikKLSAgICAg
ICAgLCBtX2pzU3RyaW5nVlB0cihqc1N0cmluZ1ZQdHIpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQogICAg
ICAgICAsIG1faXNEcmFpbmluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAppbmRleCBkNmZiODUzYTFjOTA0NmFmMjczOTQ3Y2U4NWExZjM1ZDU3ZDA3
NmY3Li5mMjUyOWZkNGVmZDQ0NTdmMDMyMTNkN2Q0ZjVmNzg1YjY2OGVlYjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC02MCwxOCArNjAsMTcgQEAg
TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxs
b2NhdGlvbiwgSGVhcCogaGVhcCwgc2kKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lU
SU9OKHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Io
SlNDZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cikKK2lubGluZSB2b2lkIE1hcmtl
ZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwpCiB7CiAgICAgLy8gQSBwcmV2aW91
cyBlYWdlciBzd2VlcCBtYXkgYWxyZWFkeSBoYXZlIHJ1biBjZWxsJ3MgZGVzdHJ1Y3Rvci4KICAg
ICBpZiAoY2VsbC0+aXNaYXBwZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdm9pZCogdnB0
ciA9IGNlbGwtPnZwdHIoKTsKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAg
IG1faGVhcC0+bV9kZXN0cm95ZWRUeXBlQ291bnRzLmNvdW50VlB0cih2cHRyKTsKICNlbmRpZgot
ICAgIGlmICh2cHRyICE9IGpzRmluYWxPYmplY3RWUHRyKQotICAgICAgICBjZWxsLT5+SlNDZWxs
KCk7CisgICAgaWYgKGNlbGwtPmNsYXNzSW5mbygpICE9ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8p
CisgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxlKCktPmRlc3Ryb3koY2VsbCk7CiAKICAgICBjZWxs
LT56YXAoKTsKIH0KQEAgLTg1LDcgKzg0LDYgQEAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBNYXJr
ZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgpCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0
aGUgYWxsb2NhdGlvbiBjb2RlIG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQogICAgIC8v
IG9yZGVyIG9mIHRoZSBmcmVlIGxpc3QuCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAwOwotICAgIHZv
aWQqIGpzRmluYWxPYmplY3RWUHRyID0gbV9oZWFwLT5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmpl
Y3RWUHRyOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsg
aSArPSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQg
JiYgbV9tYXJrcy5nZXQoaSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTk1LDcgKzkzLDcg
QEAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoYmxvY2tTdGF0ZSAhPSBOZXcp
Ci0gICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsLCBqc0ZpbmFsT2JqZWN0VlB0cik7Cisg
ICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkgewogICAgICAgICAgICAgRnJlZUNlbGwqIGZyZWVDZWxsID0g
cmVpbnRlcnByZXRfY2FzdDxGcmVlQ2VsbCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggYWRjNjU3MjY0MjA3MWFmM2U3MTdjYWI2YzhhZmZjZmVj
ZmIzNzc0YS4uOGM2NjVkZDViZWQ1YjI0MTNkZDMwMjE3ZmY3NGU0MDA3YWYxYzk3YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0xNjUsNyArMTY1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCYsIEhlYXAqLCBzaXplX3QgY2VsbFNpemUpOwogICAgICAgICBBdG9tKiBhdG9tcygp
OwogICAgICAgICBzaXplX3QgYXRvbU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAgICAgIHZvaWQg
Y2FsbERlc3RydWN0b3IoSlNDZWxsKiwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIpOworICAgICAg
ICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOwogICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0
YXRlLCBTd2VlcE1vZGU+IEZyZWVDZWxsKiBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAgICAgIAog
I2lmIEVOQUJMRShHR0MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApp
bmRleCBhNDYxNzgxNGFlN2UyZjY4YWIzMjQ4OWVlOWVjZWE1YWViOGM2NjEyLi5iYjMwMWZiZjE5
Yzg1NTM0N2Y5OGZmOWNjMzNkMTEzMzQ0Y2QzODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIFNs
b3RWaXNpdG9yIDogcHVibGljIE1hcmtTdGFjayB7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBSb290
VmlzaXRvcjsKIHB1YmxpYzoKLSAgICBTbG90VmlzaXRvcihNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhJiwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBq
c1N0cmluZ1ZQdHIpOworICAgIFNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEm
KTsKIAogICAgIHZvaWQgZG9uYXRlKCkKICAgICB7CkBAIC03MSw4ICs3MSw4IEBAIHByaXZhdGU6
CiAgICAgfQogfTsKIAotaW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihNYXJrU3RhY2tU
aHJlYWRTaGFyZWREYXRhJiBzaGFyZWQsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFs
T2JqZWN0VlB0ciwgdm9pZCoganNTdHJpbmdWUHRyKQotICAgIDogTWFya1N0YWNrKHNoYXJlZCwg
anNBcnJheVZQdHIsIGpzRmluYWxPYmplY3RWUHRyLCBqc1N0cmluZ1ZQdHIpCitpbmxpbmUgU2xv
dFZpc2l0b3I6OlNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmIHNoYXJlZCkK
KyAgICA6IE1hcmtTdGFjayhzaGFyZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAppbmRleCBiOThkMWE1MTE3NTg3NjBlMDYwYWRkN2U5
MTU0YjI5MWRiZWZhYjE0Li5hY2I0OTQwMzRmYThiZDc3ZDAyMjc3MTE3NDdiZTA1M2RjZTExNTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwCkBA
IC01NCw3ICs1NCw4IEBAIHZvaWQgVlRhYmxlU3BlY3RydW06OmNvdW50VlB0cih2b2lkKiB2VGFi
bGVQb2ludGVyKQogCiB2b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudChKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgY291bnRWUHRyKGNlbGwtPnZwdHIoKSk7CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
Y2hhbmdlIHRoaXMgY2xhc3MgdG8gY291bnQgQ2xhc3NJbmZvcyByYXRoZXIgdGhhbiB2cHRycwor
ICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKIH0KIAogdm9pZCBWVGFibGVTcGVjdHJ1bTo6ZHVtcChG
SUxFKiBvdXRwdXQsIGNvbnN0IGNoYXIqIGNvbW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA0OWJmZGQwNGYzMGMyMGM1
N2IzYzU3MmEzNTBiYjkzNGY4Zjg0M2QyLi5jZGFmYzgzZDFiNDE2NmY3ZTVlMDBmMDk1NzYxNjli
NjJkMTQ1NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdz
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgSlNWYWx1
ZQogICAgICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogICAgIH0KIAotICAgIGlmIChpc0pTQXJy
YXkoJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKGlzSlNB
cnJheShhcmd1bWVudHMpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShhcmd1
bWVudHMpOwogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFycmF5LT5sZW5ndGgoKTsKICAg
ICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJh
bWUtPnJlZ2lzdGVycygpICsgZmlyc3RGcmVlUmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9mZnNldEZv
cihhcmdDb3VudCArIDEpKTsKQEAgLTE1MDgsMTMgKzE1MDgsMTIgQEAgTkVWRVJfSU5MSU5FIHZv
aWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZUJsb2NrKgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgIGlmIChpc0pTQXJyYXkoZ2xv
YmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3Bl
cnR5TmFtZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAg
dlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9hcnJheV9sZW5ndGgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBw
cm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9n
ZXRfc3RyaW5nX2xlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMjE4LDcgKzMy
MTcsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGludCBiYXNlID0gdlBDWzJd
LnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBjYWxsRnJhbWUtPnIoYmFz
ZSkuanNWYWx1ZSgpOwotICAgICAgICBpZiAoTElLRUxZKGlzSlNBcnJheShnbG9iYWxEYXRhLCBi
YXNlVmFsdWUpKSkgeworICAgICAgICBpZiAoTElLRUxZKGlzSlNBcnJheShiYXNlVmFsdWUpKSkg
ewogICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKGFzQXJyYXkoYmFzZVZhbHVlKS0+
bGVuZ3RoKCkpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2FycmF5
X2xlbmd0aCk7CkBAIC0zMjQyLDcgKzMyNDEsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAg
ICAgICAgIGludCBiYXNlID0gdlBDWzJdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1ZSgpOwotICAgICAgICBpZiAoTElLRUxZ
KGlzSlNTdHJpbmcoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkpIHsKKyAgICAgICAgaWYgKExJS0VM
WShpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpKSB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gdlBDWzFd
LnUub3BlcmFuZDsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNO
dW1iZXIoYXNTdHJpbmcoYmFzZVZhbHVlKS0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgdlBDICs9
IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3N0cmluZ19sZW5ndGgpOwpAQCAtMzUxMSwxNSArMzUxMCwx
NSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0
LmlzVUludDMyKCkpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUlu
dDMyKCk7Ci0gICAgICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkp
IHsKKyAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAg
ICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGpzQXJyYXktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSBqc0FycmF5LT5nZXRJbmRleChpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGpzQXJyYXktPkpTQXJyYXk6OmdldChjYWxsRnJhbWUsIGkp
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VWYWx1
ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5j
YW5HZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc1N0cmluZyhiYXNlVmFs
dWUpLT5nZXRJbmRleChjYWxsRnJhbWUsIGkpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNKU0J5
dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSkt
PmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgZWxzZSBpZiAoaXNKU0J5dGVBcnJheShi
YXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4
KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChjYWxsRnJhbWUsIGkpOwpAQCAtMzU1MywxMyArMzU1MiwxMyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUlu
dDMyKCkpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7
Ci0gICAgICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAg
ICAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgICAgIEpT
QXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYg
KGpzQXJyYXktPmNhblNldEluZGV4KGkpKQogICAgICAgICAgICAgICAgICAgICBqc0FycmF5LT5z
ZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAganNBcnJheS0+SlNBcnJh
eTo6cHV0QnlJbmRleChqc0FycmF5LCBjYWxsRnJhbWUsIGksIGNhbGxGcmFtZS0+cih2YWx1ZSku
anNWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxE
YXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4
KGkpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAm
JiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAg
ICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gY2FsbEZyYW1lLT5yKHZhbHVlKS5q
c1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNJbnQzMigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKaW5kZXggZjgzYTc1OTQ5ZjY3OTkzMDBlMmY3MWE2MjQwMzRhZDE4ZDQw
YTU5MS4uZTY0ZTY5MGZlNzhiNzk4MDE2NTdhODdkMTJhN2ZhNGQ0NWFmMjFlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCkBAIC0zMjksNyArMzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHZh
bHVlVGFnLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFJlZ2lzdGVySUQgc2NyYXRjaDIsIFdyaXRlQmFy
cmllck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJh
cnJpZXIoSlNDZWxsKiBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNo
LCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCB2b2lkKiB2dGFibGUsIFJlZ2lz
dGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9j
YXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0
ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBlbWl0
QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0Z1bmN0aW9u
KEZ1bmN0aW9uRXhlY3V0YWJsZSosIFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAppbmRleCBlZmU3MDgwOWY5Mjg3MjgxYmQ3
NTIxZWU2MDU2ZGVkMzdhMTVlNzg5Li5mNDg1MTU3ZTM4NjRiZTZlYjdhN2QwMTUxNzZhMWQ5MTU0
NTc2NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1l
dGhvZHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aApAQCAtODQsNyArODQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYQogCiBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNyYyksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhzcmMsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3Ry
aW5nTGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBsb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVlT2Zmc2V0
KCkpLCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZHN0KSk7
CkBAIC0zOTksNyArMzk5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVDaGFyKHVuc2lnbmVkIHNyYykKICAgICByZXR1cm4gbV9jb2RlQmxvY2st
PmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYyku
aXNTdHJpbmcoKSAmJiBhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSkt
Pmxlbmd0aCgpID09IDE7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVu
YW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09i
amVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJl
c3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQordGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlw
ZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVC
YXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQogewogICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MqIHNp
emVDbGFzcyA9ICZtX2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yT2JqZWN0KHNpemVvZihD
bGFzc1R5cGUpKTsKICAgICBsb2FkUHRyKCZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlc3Vs
dCk7CkBAIC00MDksMTIgKzQwOSwxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0
eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvYwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQpLCBzdG9yYWdlUHRyKTsKICAgICBzdG9yZVB0cihzdG9yYWdl
UHRyLCAmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsKIAotICAgIC8vIGluaXRpYWxpemUgdGhl
IG9iamVjdCdzIHZ0YWJsZQotICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodnRhYmxlKSwgQWRk
cmVzcyhyZXN1bHQpKTsKLQogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVy
ZQogICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpKTsKIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIGNsYXNzSW5m
byBwb2ludGVyCisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigmQ2xhc3NUeXBlOjpzX2luZm8p
LCBBZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSkpOworCiAgICAgLy8g
aW5pdGlhbGl6ZSB0aGUgaW5oZXJpdG9yIElECiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKIApA
QCAtNDI1LDEyICs0MjUsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5h
bWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2MKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChU
IHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKLSAg
ICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3Q+KHN0cnVjdHVyZSwgbV9n
bG9iYWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciwgcmVzdWx0LCBzY3JhdGNoKTsKKyAgICBlbWl0
QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3Q+KHN0cnVjdHVyZSwgcmVzdWx0LCBz
Y3JhdGNoKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgUmVnaXN0ZXJJRCBzY29wZUNoYWluLCBSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQogewotICAgIGVtaXRBbGxvY2F0
ZUJhc2ljSlNPYmplY3Q8SlNGdW5jdGlvbj4oVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPm5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSksIG1fZ2xvYmFsRGF0YS0+anNG
dW5jdGlvblZQdHIsIHJlc3VsdCwgc3RvcmFnZVB0cik7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNK
U09iamVjdDxKU0Z1bmN0aW9uPihUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKS0+bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpKSwgcmVzdWx0LCBzdG9yYWdlUHRyKTsKIAog
ICAgIC8vIHN0b3JlIHRoZSBmdW5jdGlvbidzIHNjb3BlIGNoYWluCiAgICAgc3RvcmVQdHIoc2Nv
cGVDaGFpbiwgQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3MDU0YjUz
NDE1NjQ3NDk2ZTA3MWZhYWQ2Y2I5YWNlODQwNTIwM2ZhLi5mNWJlMjc5YTYyOWMzZTFmYzZkNTYy
ZTQ5YWFiM2ZhZWEwODQ1OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxl
PiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKEpTR2wKIAogICAgIC8v
IENoZWNrIGVheCBpcyBhIHN0cmluZwogICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczEgPSBl
bWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMy
ID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2ds
b2JhbERhdGEtPmpzU3RyaW5nVlB0cikpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczIg
PSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVj
a3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgVXN0cmluZy4KICAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCkpLCBy
ZWdUMCk7CkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihzcmMsIHJlZ1QwKTsKICAgICAKICAgICBKdW1wIGlzSW1tID0gZW1pdEp1bXBJZk5vdEpT
Q2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwog
ICAgIGlzSW1tLmxpbmsodGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTEyMDIsNyAr
MTIwMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3Mo
cmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApp
bmRleCAwY2VhNDllODJmMzJkZmEzMDIzY2U2MWMyYmRlYjI2NWY3ZmFiNjA1Li41OWM0MmI4ZDYw
NTE2ZGRiZWQzZGM5OWM2YmNkMWNjYzE3YTIxNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8
RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFt
cG9saW5lcyhKU0dsCiAgICAgLy8gcmVnVDAgaG9sZHMgcGF5bG9hZCwgcmVnVDEgaG9sZHMgdGFn
CiAKICAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMxID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgc3RyaW5nX2Zh
aWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVk
SW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSk7CisgICAgSnVtcCBzdHJpbmdfZmFp
bHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsKIAog
ICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBVc3RyaW5n
LgogICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1f
bGVuZ3RoKSksIHJlZ1QyKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9h
ZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9n
bG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAg
ICAgaWYgKGRzdCAhPSBzcmMpCkBAIC05NjMsOCArOTYzLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5PjoKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdz
IG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBK
U0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKLSAg
ICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyKSwg
VHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAg
ICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5m
bykpKTsKIAogICAgIC8vIFN0cmluZyBjYXNlLgogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsRXFT
dHJpbmdzKHRoaXMsIGN0aV9vcF9lcV9zdHJpbmdzKTsKQEAgLTEwMTEsOCArMTAxMSw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdldFNsb3dDYXNl
KGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
dGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0
cmluZ1ZQdHIpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMiksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIp
KSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5n
OjpzX2luZm8pKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
JkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDQ4
LDggKzEwNDgsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeQogCiAgICAgLy8gSnVtcCB0byBh
IHNsb3cgY2FzZSBpZiBib3RoIGFyZSBzdHJpbmdzLgogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAg
ICBKdW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
KSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpOwotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiksIFRydXN0ZWRJbW1QdHIobV9n
bG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgSnVtcCBmaXJzdE5vdFN0cmluZyA9IGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogICAgIG5vdENlbGwubGluayh0
aGlzKTsKICAgICBmaXJzdE5vdFN0cmluZy5saW5rKHRoaXMpOwogCkBAIC0xNTI0LDcgKzE1MjQs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdUMCk7CiAK
ICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRk
cmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsK
IAogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3Ro
aXMpLCB0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdUMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY3MTdhMTBiY2JjNzhmMmI1
NGEzMjE4MzY0YTdhZGNkNmNiYzYzMWQuLjQ4OTUxZTg3OTM0YjA0YzAyNDVmMzA4MWJhODM4OTM1
OTRlMjI4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5
VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNJbnRl
cmZhY2VKSVQgaml0OwogICAgIEp1bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVu
ZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihn
bG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwogCiAgICAgLy8gTG9hZCBzdHJp
bmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUg
ZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRo
dW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTEwOCw3ICsx
MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2ds
b2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnZlY3Rvckxl
bmd0aE9mZnNldCgpKSkpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7IC8vIGJhc2UgY2Vs
bCBjaGVjawogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0
cmluZ1ZQdHIpKTsKKyAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpT
U3RyaW5nOjpzX2luZm8pKTsKICAgICBlbWl0TmFrZWRDYWxsKENvZGVMb2NhdGlvbkxhYmVsKG1f
Z2xvYmFsRGF0YS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUo
KSkpOwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCk7CiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKQEAgLTIwOSw3ICsyMDksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICB6ZXJvRXh0ZW5k
MzJUb1B0cihyZWdUMSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1Qw
LCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwpAQCAtNTU5LDYgKzU1
OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlCiAgICAgLy8gYW4gdW5jb25kaXRpb25hbCBi
YXJyaWVyIGhlcmUuCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCBy
ZWdUMywgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOwogCisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gb2xkU3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSk7CiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1
Y3R1cmUpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAg
Y29tcGlsZVB1dERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIGNhY2hlZE9mZnNldCk7CiAKQEAg
LTYxOCw3ICs2MTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8gPSAmbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwog
CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIGFycmF5Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0g
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzQXJyYXlWUHRyKSk7CisgICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkh
IC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZmVh
ZjhiODlkZTk0NGVlNDE2YzdhODNkMjIzNzg0YzBiOWRkNzQyMC4uYjczZDdhYjc1MTYyMjE1YTMz
ZDczNWNlZTk3Zjk3YmEzZDdmYjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgSklU
OjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgSnVtcExpc3QgZmFp
bHVyZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAg
ICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2lu
Zm8pKSk7CiAgICAgCiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QxLCBhbmQgc3Rh
cnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAg
ICBqaXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhP
ZmZzZXQoKSksIHJlZ1QxKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgCiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1Qx
KTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBU
cnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgIAogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDMpOwog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVn
VDAsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjQ0LDcgKzI0NCw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RT
dHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRy
KG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7CiAgICAgZW1pdE5ha2VkQ2FsbCht
X2dsb2JhbERhdGEtPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKS5jb2Rl
KCkpOwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCk7CiAgICAg
ZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVn
VDAsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgZW1pdFdyaXRlQmFy
cmllcihyZWdUMCwgcmVnVDEsIHJlZ1QxLCByZWdUMywgVW5jb25kaXRpb25hbFdyaXRlQmFycmll
ciwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKQogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIAogICAg
IC8vIENoZWNrIGZvciBhcnJheQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0Fy
cmF5VlB0cikpOworICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpOwogICAgIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQg
dGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCmluZGV4IDQxMzYxNGU5NDYwZTlkYzVlNzUwYjRlMDQxZTk2NzQwZDBlYzk3
ZTQuLjllYjM4ZTBkNjQ5ODBlZmZjYjY3Nzc4MjIyNTNkNWJlOWI0OTljOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04NzUsMTIgKzg3NSwxMiBAQCBORVZFUl9J
TkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ29kZUJsb2NrKiBjbwogICAgIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKIAotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwg
YmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CisgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFtZSA9
PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgSklUOjpjb21w
aWxlUGF0Y2hHZXRBcnJheUxlbmd0aChjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0
YSwgY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIHByb3BlcnR5
TmFtZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFtZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgLy8gVGhlIHRyYWRlb2ZmIG9mIGNvbXBpbGluZyBh
biBwYXRjaGVkIGlubGluZSBzdHJpbmcgbGVuZ3RoIGFjY2VzcyByb3V0aW5lIGRvZXMgbm90IHNl
ZW0KICAgICAgICAgLy8gdG8gcGF5IG9mZiwgc28gd2UgY3VycmVudGx5IG9ubHkgZG8gdGhpcyBm
b3IgYXJyYXlzLgogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2Nr
LCByZXR1cm5BZGRyZXNzLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpU3RyaW5nTGVuZ3RoVHJh
bXBvbGluZSgpKTsKQEAgLTI0NzgsNyArMjQ3OCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfdmFsKQogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxE
YXRhOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUo
KTsKQEAgLTI0OTIsMTMgKzI0OTEsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpT
VmFsdWUsIG9wX2dldF9ieV92YWwpCiAKICAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsK
ICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBpZiAo
aXNKU1N0cmluZyhnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmNhbkdldEluZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYg
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKICAgICAgICAgICAgIGN0aVBh
dGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVS
Tl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X3ZhbF9zdHJpbmcpKTsKICAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2Fs
bEZyYW1lLCBpKTsKICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5
KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkp
IHsKICAgICAgICAgICAgIC8vIEFsbCBmYXN0IGJ5dGUgYXJyYXkgYWNjZXNzZXMgYXJlIHNhZmUg
ZnJvbSBleGNlcHRpb25zIHNvIHJldHVybiBpbW1lZGlhdGVseSB0byBhdm9pZCBleGNlcHRpb24g
Y2hlY2tzLgogICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCksIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9n
ZXRfYnlfdmFsX2J5dGVfYXJyYXkpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKSk7CkBAIC0y
NTE5LDcgKzI1MTgsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
Z2V0X2J5X3ZhbF9zdHJpbmcpCiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwog
ICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUo
KTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7
CkBAIC0yNTI4LDExICsyNTI2LDExIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1Zh
bHVlLCBvcF9nZXRfYnlfdmFsX3N0cmluZykKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMy
KCk7Ci0gICAgICAgIGlmIChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgIGlmIChpc0pTU3RyaW5n
KGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAg
ICAgICAgICByZXN1bHQgPSBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChjYWxsRnJhbWUs
IGkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQo
Y2FsbEZyYW1lLCBpKTsKLSAgICAgICAgICAgIGlmICghaXNKU1N0cmluZyhnbG9iYWxEYXRhLCBi
YXNlVmFsdWUpKQorICAgICAgICAgICAgaWYgKCFpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpCiAgICAg
ICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCksIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfdmFs
KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMjU0OSw3ICsyNTQ3LDYgQEAgREVGSU5F
X1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92YWxfYnl0ZV9hcnJheSkK
ICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSBzdGFja0ZyYW1lLmdsb2JhbERhdGE7CiAgICAgCiAgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKQEAgLTI1NTgsMTMgKzI1NTUs
MTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV92YWxf
Ynl0ZV9hcnJheSkKIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAg
ICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlz
SlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNl
VmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CiAg
ICAgICAgICAgICAvLyBBbGwgZmFzdCBieXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZlIGZyb20g
ZXhjZXB0aW9ucyBzbyByZXR1cm4gaW1tZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9uIGNoZWNr
cy4KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCeXRlQXJyYXkoYmFzZVZh
bHVlKS0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXN1
bHQgPSBiYXNlVmFsdWUuZ2V0KGNhbGxGcmFtZSwgaSk7Ci0gICAgICAgIGlmICghaXNKU0J5dGVB
cnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKQorICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXko
YmFzZVZhbHVlKSkKICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlf
b3BfZ2V0X2J5X3ZhbCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CkBAIC0yNjA0LDEz
ICsyNjAxLDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWwpCiAK
ICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJf
dCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Ci0gICAgICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFs
RGF0YSwgYmFzZVZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsK
ICAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAg
ICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAganNB
cnJheS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGksIHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGNhbGxGcmFtZSwg
aSwgdmFsdWUpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwg
YmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkg
eworICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVB
cnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewogICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgICAg
IGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVC
X1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5
KSk7CiAgICAgICAgICAgICAvLyBBbGwgZmFzdCBieXRlIGFycmF5IGFjY2Vzc2VzIGFyZSBzYWZl
IGZyb20gZXhjZXB0aW9ucyBzbyByZXR1cm4gaW1tZWRpYXRlbHkgdG8gYXZvaWQgZXhjZXB0aW9u
IGNoZWNrcy4KQEAgLTI2NDMsNyArMjY0MCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQs
IG9wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7CiAgICAgCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzdGFja0ZyYW1lLmdsb2Jh
bERhdGE7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpz
VmFsdWUoKTsKQEAgLTI2NTEsNyArMjY0Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQs
IG9wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMy
KCk7Ci0gICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYg
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgaWYg
KGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5B
Y2Nlc3NJbmRleChpKSkgewogICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0g
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQWxs
IGZhc3QgYnl0ZSBhcnJheSBhY2Nlc3NlcyBhcmUgc2FmZSBmcm9tIGV4Y2VwdGlvbnMgc28gcmV0
dXJuIGltbWVkaWF0ZWx5IHRvIGF2b2lkIGV4Y2VwdGlvbiBjaGVja3MuCkBAIC0yNjY2LDcgKzI2
NjIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsX2J5dGVfYXJy
YXkpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzSlNCeXRlQXJy
YXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkKKyAgICAgICAgaWYgKCFpc0pTQnl0ZUFycmF5KGJh
c2VWYWx1ZSkpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZy
YW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29w
X3B1dF9ieV92YWwpKTsKICAgICAgICAgYmFzZVZhbHVlLnB1dChjYWxsRnJhbWUsIGksIHZhbHVl
KTsKICAgICB9IGVsc2UgewpAQCAtMzQzMyw3ICszNDI5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04oRW5jb2RlZEpTVmFsdWUsIG9wX2lzX3N0cmluZykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihpc0pTU3RyaW5nKHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpz
VmFsdWUoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0pTU3Ry
aW5nKHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpKSk7CiB9CiAKIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9pc19vYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCmluZGV4IGVjYzQ5MWU4N2IxMTY3N2Zj
OWU5MTgyMTUxNjM5NGY4NzVmY2E2NTAuLmFiNzhlYWE5OTcyNTRkOTg2NjgwNTgwNTVmZjY3MmMy
MWU0NDk4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6
ZWRUaHVua0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGxvYWRKU1N0cmluZ0FyZ3VtZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0gICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0
LCAwKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzU3RyaW5nVlB0cikpKTsKKyAgICAg
ICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhkc3Qs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19p
bmZvKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFyZ3Vt
ZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDk4MzZhMTIwN2ZjY2FiZmNkZGJlYzNjODUwZDU2NTQwNjA1MGYwMjAuLmQxMTk1ZmJmNDUx
Nzg5ZWJmOGE5NDRlYWY5YzFiYjY5ZmZiZTMzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC00MSw2ICs0MSw4IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JJc0FycmF5
KEV4ZWNTdGF0ZSopOwogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoQXJyYXlDb25zdHJ1Y3Rvcik7CisKIGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8s
IDAsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEFycmF5Q29uc3RydWN0b3IpIH07CiAKIC8qIFNvdXJjZSBmb3IgQXJyYXlDb25zdHJ1Y3Rvci5s
dXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCmluZGV4IGI3ODQ0MTNhZjhlYjRlY2RiYmJiYzMzYTZjOTU2OTAwMzNhMDliYzAuLmQ4ZDE0
ZjM0ZmYyNjBmN2FkNzcwNWY5NDVlMmIzMDQ5M2RjYTNjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOwogCi0gICAgYm9vbCBpc1JlYWxBcnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzVmFsdWUpOworICAgIGJvb2wgaXNSZWFsQXJyYXkgPSBpc0pTQXJyYXkodGhp
c1ZhbHVlKTsKICAgICBpZiAoIWlzUmVhbEFycmF5ICYmICF0aGlzVmFsdWUuaW5oZXJpdHMoJkpT
QXJyYXk6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwog
ICAgIEpTQXJyYXkqIHRoaXNPYmogPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC0zMDAsNyArMzAw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBzZXBhcmF0b3IgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChpc0pTQXJyYXkoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsKKyAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmop
KSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKIAogICAgICAg
ICBpZiAobGVuZ3RoKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAKLSAgICBpZiAoaXNKU0FycmF5
KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNWYWx1ZSkpCisgICAgaWYgKGlzSlNBcnJheSh0aGlz
VmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVl
KS0+cG9wKCkpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3Qo
ZXhlYyk7CkBAIC00MTIsNyArNDEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogCi0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSB7
CisgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9
PSAxKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzVmFsdWUpOwogICAg
ICAgICBhcnJheS0+cHVzaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgpKSk7CkBAIC00ODEsNyAr
NDgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICB9
IGVsc2UgewogICAgICAgICByZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgMCk7Ci0gICAgICAg
IGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgICAgIGlm
IChpc0pTQXJyYXkodGhpc09iaikpCiAgICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+
c2hpZnRDb3VudChleGVjLCAxKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGsgPSAxOyBrIDwgbGVuZ3RoOyBrKyspIHsKQEAgLTYyNyw3ICs2MjcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB1bnNpZ25lZCBhZGRpdGlvbmFsQXJncyA9IHN0ZDo6bWF4PGludD4oZXhlYy0+
YXJndW1lbnRDb3VudCgpIC0gMiwgMCk7CiAgICAgaWYgKGFkZGl0aW9uYWxBcmdzICE9IGRlbGV0
ZUNvdW50KSB7CiAgICAgICAgIGlmIChhZGRpdGlvbmFsQXJncyA8IGRlbGV0ZUNvdW50KSB7Ci0g
ICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzT2JqKSkpCisgICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSh0aGlz
T2JqKSkpCiAgICAgICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnNoaWZ0Q291bnQo
ZXhlYywgZGVsZXRlQ291bnQgLSBhZGRpdGlvbmFsQXJncyk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSBiZWdpbjsgayA8IGxlbmd0aCAtIGRl
bGV0ZUNvdW50OyArK2spIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGsgLSAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXNPYmopKSkKKyAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KHRo
aXNPYmopKSkKICAgICAgICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+dW5zaGlmdENv
dW50KGV4ZWMsIGFkZGl0aW9uYWxBcmdzIC0gZGVsZXRlQ291bnQpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoIC0gZGVsZXRlQ291
bnQ7IGsgPiBiZWdpbjsgLS1rKSB7CkBAIC02NzYsNyArNjc2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgdW5zaWduZWQgbnJBcmdzID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmICgobnJB
cmdzKSAmJiAobGVuZ3RoKSkgewotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXNPYmopKQorICAgICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAg
ICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnVuc2hpZnRDb3VudChleGVjLCBuckFyZ3MpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsgayA+
IDA7IC0taykgewpAQCAtNzE1LDcgKzcxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNGaWx0ZXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgdW5zaWduZWQg
ZmlsdGVySW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkg
eworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBj
YWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtNzczLDcgKzc3Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
SlNBcnJheSogcmVzdWx0QXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIGxlbmd0aCk7
CiAgICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYg
aXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7CisgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIEpTRnVu
Y3Rpb24qIGYgPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBhc0FycmF5KHRoaXNPYmopOwogICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywg
ZiwgMyk7CkBAIC04MzYsNyArODM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzQm9vbGVhbih0cnVlKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2Jq
KSkgeworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2Jq
KSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAg
ICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2Fs
bCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwpAQCAtODkyLDcgKzg5Miw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogCiAgICAgdW5zaWdu
ZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KCZl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxU
eXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGYgPSBh
c0Z1bmN0aW9uKGZ1bmN0aW9uKTsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRo
aXNPYmopOwogICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7CkBAIC05
NDQsNyArOTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NvbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGZh
bHNlKTsKIAogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkgeworICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAg
ICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxs
KGV4ZWMsIGYsIDMpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSAwOwot
ICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgaWYg
KGlzSlNBcnJheSh0aGlzT2JqKSkKICAgICAgICAgYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwog
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKQpAQCAtMTA3OSw3ICsxMDc5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CiAKICAgICBKU0FycmF5KiBhcnJheSA9IDA7Ci0gICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzT2JqKSkKKyAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAg
ICBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA+PSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGMyOGRlMTQzMTgxMjY1ODExYzJiZjE1OTcwMmFk
MjczNTBjMjNhYi4uYTU0ZDI4MWE3ZTBiYTQ3ZWVlYTBiNzc3NTk2Yjc4YjI3MWQzOGJlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChCb29sZWFuQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoQm9vbGVhbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5Db25zdHJ1Y3RvcikgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcAppbmRleCA1YTQ0OWMwNjM5
Mzc1NzUyNTM4MTIxYTkxNDY4YjE3OTU1NzgyMjczLi4zN2M2ZWFiMGRkZWNlM2Y1NGMzZWNhYzky
YWQ4OTJmM2ZkNTI4MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbk9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUihCb29sZWFuT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5P
YmplY3Q6OnNfaW5mbyA9IHsgIkJvb2xlYW4iLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQm9vbGVhbk9iamVjdCkgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCBjN2Vh
OTY0ZWM3ZTNlNWYzOTRhZTFjYmFiZTBjN2YyZTJhZTBkNDI4Li5iOTYwNWQwY2ZjN2ZmMDhhMjAw
ZWI5ZDUzOWNiMTg2YzFhYmYwOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcApAQCAtNDgsNiArNDgsNyBAQCBjb25zdCBDbGFz
c0luZm8gQm9vbGVhblByb3RvdHlwZTo6c19pbmZvID0geyAiQm9vbGVhbiIsICZCb29sZWFuT2Jq
ZWN0OjpzX2luZm8sCiAqLwogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xlYW5Qcm90
b3R5cGUpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoQm9vbGVhblByb3RvdHlwZSk7
CiAKIEJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5o
CmluZGV4IDA5ZmVkYjNmNGU4MzNhNGJmMjMyNmU4ODFlOTBhNmRmYzNkMGQ3NjIuLjlmZmY2NGU2
NzVhNTA1MzgwMTNkZjE1ODFhMjE4NDc4YWRmOTg2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCkBAIC0zMyw2ICszMyw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHN0cnVjdCBIYXNoVGFibGU7CiAKICAgICBzdHJ1Y3QgTWV0aG9kVGFibGUgeworICAgICAg
ICB0eXBlZGVmIHZvaWQgKCpEZXN0cm95RnVuY3Rpb25QdHIpKEpTQ2VsbCopOworICAgICAgICBE
ZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveTsKKwogICAgICAgICB0eXBlZGVmIHZvaWQgKCpWaXNp
dENoaWxkcmVuRnVuY3Rpb25QdHIpKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIFZp
c2l0Q2hpbGRyZW5GdW5jdGlvblB0ciB2aXNpdENoaWxkcmVuOwogCkBAIC0xMTQsNiArMTE3LDcg
QEAgc3RydWN0IE1lbWJlckNoZWNrIyNtZW1iZXIgeyBcCiAjZGVmaW5lIEhBU19NRU1CRVJfTkFN
RUQoa2xhc3MsIG5hbWUpIChNZW1iZXJDaGVjayMjbmFtZTxrbGFzcz46OmhhcykKIAogI2RlZmlu
ZSBDUkVBVEVfTUVUSE9EX1RBQkxFKENsYXNzTmFtZSkgeyBcCisgICAgICAgICZDbGFzc05hbWU6
OmRlc3Ryb3ksIFwKICAgICAgICAgJkNsYXNzTmFtZTo6dmlzaXRDaGlsZHJlbiwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRDYWxsRGF0YSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRDb25z
dHJ1Y3REYXRhLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcAppbmRleCA5MzE4OTllYjBhM2NlZDc1NjdiOGU4Y2RmN2VkMGM0ZDRiOWVm
NTMyLi5hZDQwMmM3NzUxZDlhN2RjNDNiZDc2MGRmOWFjNTgwMWZkZTc3OWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTcy
LDYgKzcyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIERhdGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmYKICovCiAKIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoRGF0ZUNvbnN0cnVjdG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVD
VE9SKERhdGVDb25zdHJ1Y3Rvcik7CiAKIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAppbmRleCA1NDU3NTdiOTNm
NDdiNjU0ZmFhYjczYThkZGQ0ZGE2M2M4OWUzYzhhLi5hNTAyNzcwYzg3NTA4YjcyZTRmMjQ5OGRk
OWM3NjI3NWNjYjc4ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5jcHAKQEAgLTUzLDYgKzUzLDExIEBAIHZvaWQgRGF0ZUluc3RhbmNlOjpmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGRvdWJsZSB0aW1lKQogICAgIHNl
dEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwganNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0K
IAordm9pZCBEYXRlSW5zdGFuY2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2Fz
dDxEYXRlSW5zdGFuY2UqPihjZWxsKS0+RGF0ZUluc3RhbmNlOjp+RGF0ZUluc3RhbmNlKCk7Cit9
CisKIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6OmNhbGN1bGF0ZUdyZWdv
cmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBkb3VibGUgbWlsbGkg
PSBpbnRlcm5hbE51bWJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAppbmRleCAzMjQxNzBiMWNhZjQwODA3N2QwZmU0NTFkOGJmNTU1ZTA2NjQ5YzAw
Li44ZDkwY2YwYzQxN2FmODgzNTdjZjA4ZGYyYzg5ZWIyMzQxYzQxNDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMzQsNyArMzQsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopOwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGRvdWJsZSk7Ci0gICAgICAgIAor
CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgCiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIEpTV3JhcHBlck9iamVjdCBCYXNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggNGExZTE0ODIwNTVkOWFjZDI3N2U1NDU2MWIzN2Jm
MjE2OTE2ZDY5Yi4uYTUzNzNkNTI1Y2ExNjY0NWM4YTJlZjNhZDg1ZDg5YjQ1MmMwMjQ0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTcwLDYgKzE3MCwxMSBA
QCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik7
CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pIH07CiAKK3ZvaWQgU3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8U3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uKj4oY2VsbCktPlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6
flN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbigpOworfQorCiBKU1ZhbHVlIGNyZWF0ZVR5cGVF
cnJvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggYWM3MzU0ZDMx
NzIwNGNlN2E3N2M5ZThlMDlmMDNlNzNlYTFhMmYyMy4uMTdjMzQ5OGJjZmY0OTM1OWZmODY0ZjFl
MThhYjNhNDA0MTI3M2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBA
IC04Miw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA1MjMwOWQxZmQ2
YWE5NzQzOTljNjU0N2I1NjM1ZmU1OGU2OTQ0ZmZjLi5jOGY5M2JhMzIzY2M1ZGM3YTdlMzhmNzUy
N2IwZjIzZGNjODhmMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CitBU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUihFcnJvckNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJ
bmZvIEVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckNvbnN0cnVjdG9yKSB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IDgz
YWJlNWMyNjAwNjUwNjA1N2MyMDMzZjZjYmEyODgyMmVmZGRlYzcuLjkxYTZmYzQwZWFiODExN2Q2
YzUxYzkwZmIyZDA4M2FlYjM4Y2NiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihFcnJvckluc3RhbmNlKTsKKwog
Y29uc3QgQ2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OnNfaW5mbyA9IHsgIkVycm9yIiwgJkpTTm9u
RmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckluc3Rh
bmNlKSB9OwogCiBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGQ1YWNlODA3YTRkM2I5OGMy
YTczMjIyZDY2MTU3MWFhOTUyYzcwMjMuLjA1ZTk3MWY3ZmYwNWIzZTY0NGVhYmI5NmI1Y2MwNjk1
OWU2ZDhiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitB
U1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKTsK
KwogY29uc3QgQ2xhc3NJbmZvIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9IHsg
IkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IpIH07CiAKIEpTVmFsdWUgSW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCkBAIC02Niw2ICs2OCw4
IEBAIGJvb2wgaXNJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU1ZhbHVlIHZhbHVlKQog
fQogCiAKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFRlcm1pbmF0ZWRFeGVjdXRpb25F
cnJvcik7CisKIGNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5m
byA9IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKSB9OwogCiBKU1ZhbHVl
IFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDY0ZTkyZThhZjFkZmUx
M2ZjMTE2YzY1ODA5ZjBhNTE2NzgzY2IzYjIuLmFkODY0NjNkYmY0NzcyYjFhNmRmM2NkM2JhNDUx
ZDFkOGM1MTE0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCkBAIC0zOCw2ICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIEV4ZWN1dGFibGVCYXNlOjpzX2luZm8gPSB7ICJFeGVjdXRhYmxlIiwgMCwgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShFeGVjdXRhYmxlQmFzZSkgfTsKIAordm9pZCBFeGVjdXRhYmxlQmFz
ZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4o
Y2VsbCktPkV4ZWN1dGFibGVCYXNlOjp+RXhlY3V0YWJsZUJhc2UoKTsKK30KKwogaW5saW5lIHZv
aWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiB7CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTYx
LDggKzY2LDkgQEAgSW50cmluc2ljIEV4ZWN1dGFibGVCYXNlOjppbnRyaW5zaWMoKSBjb25zdAog
CiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTmF0aXZlRXhl
Y3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKE5hdGl2ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGU6On5OYXRpdmVFeGVj
dXRhYmxlKCkKK3ZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7
CisgICAganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihjZWxsKS0+TmF0aXZlRXhlY3V0YWJsZTo6
fk5hdGl2ZUV4ZWN1dGFibGUoKTsKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtOTMsNiAr
OTksMTEgQEAgdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5hbGl6ZShKU0NlbGwqIGNlbGwpCiAK
IGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3JpcHRFeGVj
dXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAordm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8U2NyaXB0RXhlY3V0YWJsZSo+KGNlbGwpLT5T
Y3JpcHRFeGVjdXRhYmxlOjp+U2NyaXB0RXhlY3V0YWJsZSgpOworfQorCiBjb25zdCBDbGFzc0lu
Zm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNjcmlwdEV4
ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJs
ZSkgfTsKIAogRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCkKQEAgLTEwMCw4
ICsxMTEsOSBAQCBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaQogewogfQogCi1FdmFsRXhlY3V0YWJs
ZTo6fkV2YWxFeGVjdXRhYmxlKCkKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQogeworICAgIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpLT5FdmFsRXhlY3V0
YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBQcm9ncmFtRXhl
Y3V0YWJsZTo6c19pbmZvID0geyAiUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJs
ZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb2dyYW1FeGVjdXRhYmxlKSB9
OwpAQCAtMTExLDggKzEyMyw5IEBAIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKIHsKIH0KIAotUHJv
Z3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFi
bGUqPihjZWxsKS0+UHJvZ3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpOwogfQog
CiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlv
bkV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKQEAgLTEzNyw4ICsxNTAsOSBAQCBGdW5j
dGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsCiB7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6fkZ1bmN0aW9u
RXhlY3V0YWJsZSgpCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCiB7CisgICAganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpLT5GdW5jdGlvbkV4
ZWN1dGFibGU6On5GdW5jdGlvbkV4ZWN1dGFibGUoKTsKIH0KIAogSlNPYmplY3QqIEV2YWxFeGVj
dXRhYmxlOjpjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW5Ob2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCmluZGV4IDYzOTU4NDNhYzJkM2VhYzZjMWU0MzRiOGFjMmEwMmNiYjdjMDRmMjcuLjdmODVj
OTAyNzA3ZTZlYmE2N2U2NmY3NzUwYTFkMGVkMjUxY2UxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTc3LDYgKzc3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKICAgICAgICAgYm9vbCBpc0hvc3RGdW5j
dGlvbigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgobV9udW1QYXJhbWV0
ZXJzRm9yQ2FsbCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUKSA9PSAobV9udW1QYXJhbWV0ZXJz
Rm9yQ29uc3RydWN0ID09IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpKTsKQEAgLTIwNiw3ICsyMDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgdmlydHVh
bCB+TmF0aXZlRXhlY3V0YWJsZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5j
dGlvbjsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1f
Y29uc3RydWN0b3I7IH0KQEAgLTI3NCw2ICsyNzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KwogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsg
fQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnBy
b3ZpZGVyKCktPmFzSUQoKTsgfQogICAgICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQpAQCAtMzE4LDcgKzMy
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CiAKLSAgICAgICAgdmlydHVhbCB+RXZhbEV4ZWN1dGFibGUoKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBKU09iamVj
dCogY29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSkKICAgICAgICAgewpAQCAtMzkxLDcgKzM5NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5Q
cm9ncmFtRXhlY3V0YWJsZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQogICAgICAgICB7CkBAIC00NjgsNyArNDcyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgfkZ1bmN0aW9uRXhlY3V0YWJsZSgpOworICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIEpTRnVuY3Rpb24qIG1ha2UoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAppbmRleCBiZTRjNjNjNDU3NmNlNzQwMWQxZmM5MDE2OWVlNDZmMzA3NWU2ZTA2Li5lMDhlNThj
ODM1YThkMmZkMTVkYTNkYmYwODg2YWM5YmQ5MTc0NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsNiAr
MzYsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihGdW5jdGlv
bkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggMTk4OTgyN2IyZmRhZjc1
ZjFlODk3MmE2NjQ0ZmY2YjVmNmFmMmEyOS4uYjEwMTdlNDkzNzJlMzU3MTE2ZDBlOWUyNTgwZWNh
Y2Q5NzZhNDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rpb25Qcm90b3R5cGUpOworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoRnVuY3Rpb25Qcm90b3R5cGUpOwogCiBjb25zdCBDbGFzc0lu
Zm8gRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvblByb3RvdHlwZSkgfTsKIApAQCAt
MTM2LDcgKzEzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90
b0Z1bmNBcHBseShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoYXNBcmd1bWVudHMo
YXJyYXkpLT5sZW5ndGgoZXhlYykgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cykKICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpKTsKICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFycmF5KS0+ZmlsbEFyZ0xpc3QoZXhlYywg
YXBwbHlBcmdzKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERh
dGEoKSwgYXJyYXkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNKU0FycmF5KGFycmF5KSkgewog
ICAgICAgICAgICAgaWYgKGFzQXJyYXkoYXJyYXkpLT5sZW5ndGgoKSA+IEFyZ3VtZW50czo6TWF4
QXJndW1lbnRzKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICAgICAgYXNBcnJheShhcnJheSktPmZp
bGxBcmdMaXN0KGV4ZWMsIGFwcGx5QXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAxN2NiYjQ0OWYyYzZkNzE3MTNhNWViMTU2MGRm
NzJlNzJjMTkyOTcxLi45MjAzOTlkZGEzZjM4YmY4NzcxZWU1MDVmNjZkMTk0YmRkZTljNWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEdldHRlclNldHRlcik7CisKIGNvbnN0IENsYXNzSW5mbyBHZXR0ZXJTZXR0ZXI6
OnNfaW5mbyA9IHsgIkdldHRlclNldHRlciIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
R2V0dGVyU2V0dGVyKSB9OwogCiB2b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAppbmRleCAzYTM3MWY5NTBk
M2NlM2EwNzUzZDgwZGY4YjJiOTQzNTZjM2Y1ZGQ4Li5lNWUxYzJhZTVmMmFhM2NjYTY1ZTNlOTY4
ZDQ1NDYzODU4NWFkYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAtNTcsNyArNTcsNiBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJP
RklMSU5HKQogICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CiAjZW5kaWYK
LSAgICBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoQVNTRU1CTEVSKQogICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmluaXRpYWxpemVBbGxvY2F0
b3IoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAppbmRleCAxNzE0MTYzNzY3MTM5YjYwM2RjNDY2ZGUzNWRiOTY4OWIz
N2I5YjNhLi41MGVhNTA0YzFhOTM5NmQyOWVlNTc3YTM3ZmU1ZDBhMzNkZDcxYmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApA
QCAtMjksMTggKzI5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBFbnN1cmUgdGhlIGNv
bXBpbGVyIGdlbmVyYXRlcyBhIHZ0YWJsZSBmb3IgSW50ZXJuYWxGdW5jdGlvbiEKLXZvaWQgSW50
ZXJuYWxGdW5jdGlvbjo6dnRhYmxlQW5jaG9yKCkge30KLQogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChJbnRlcm5hbEZ1bmN0aW9uKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKElu
dGVybmFsRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEludGVybmFsRnVuY3Rpb24pIH07CiAKLUludGVybmFsRnVuY3Rpb246
OkludGVybmFsRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgOiBKU05vbkZpbmFs
T2JqZWN0KFZQdHJTdGVhbGluZ0hhY2spCi17Ci19Ci0KIEludGVybmFsRnVuY3Rpb246OkludGVy
bmFsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpCiB7CkBAIC02Myw3ICs1Niw3IEBAIGNvbnN0IFVTdHJpbmcgSW50ZXJuYWxG
dW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgZGlz
cGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOwogICAgIAotICAgIGlmIChkaXNwbGF5TmFt
ZSAmJiBpc0pTU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIGRpc3BsYXlOYW1lKSkKKyAgICBp
ZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZyhkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVy
biBhc1N0cmluZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CiAgICAgCiAgICAgcmV0dXJu
IFVTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAppbmRleCA4ZTIxNzhlM2Y2NTk3OGE5YzFhZWFlOWE0NTVmNjI5YmYxNGNhZjAz
Li5hMDM4YjdhZTE5Nzg4YmZmNDQ1ZjAyODIyNzI0ZWM4NmNjODEyMzJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC00OSwxNyAr
NDksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBK
U09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgLy8gT25seSB1c2VkIHRvIGFsbG93
IHVzIHRvIGRldGVybWluZSB0aGUgSlNGdW5jdGlvbiB2cHRyCi0gICAgICAgIEludGVybmFsRnVu
Y3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpOwotCiAgICAgICAgIEludGVybmFsRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCiAgICAgICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwogICAgIH07CiAKICAg
ICBJbnRlcm5hbEZ1bmN0aW9uKiBhc0ludGVybmFsRnVuY3Rpb24oSlNWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKaW5k
ZXggYjFiMzNmNWQ3YmFhNGVjOWQ2ZTlmNGU5MzNkNzQyMTA5Yzg0NDRkMy4uODUxNzA4NWRmZWUy
NjhmM2Y0Zjc5NmI4MTY0MjBkNzI3YTI0YzlmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNBUElW
YWx1ZVdyYXBwZXIpOworCiBjb25zdCBDbGFzc0luZm8gSlNBUElWYWx1ZVdyYXBwZXI6OnNfaW5m
byA9IHsgIkFQSSBXcmFwcGVyIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FQSVZh
bHVlV3JhcHBlcikgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGY3NTZjN2JlMjRhOWU0ZDU4OTc4YzBhNWYyNjUz
MmU0ZGViY2EyYTEuLjBjOTIyMGU2MjZkMjVlNjYxYjFhNGYyMGI5ZDhmMmRjNTkxYzlmYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xMjYsMTEgKzEy
Niw2IEBAIGlubGluZSB2b2lkIEpTQXJyYXk6OmNoZWNrQ29uc2lzdGVuY3koQ29uc2lzdGVuY3lD
aGVja1R5cGUpCiAKICNlbmRpZgogCi1KU0FycmF5OjpKU0FycmF5KFZQdHJTdGVhbGluZ0hhY2tU
eXBlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQotewotfQotCiBK
U0FycmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsK
QEAgLTI3NywxMyArMjcyLDE4IEBAIHZvaWQgSlNBcnJheTo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHNpCiAKIEpTQXJyYXk6
On5KU0FycmF5KCkKIHsKLSAgICBBU1NFUlQodnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNBcnJh
eVZQdHIpOworICAgIEFTU0VSVChqc0Nhc3Q8SlNBcnJheSo+KHRoaXMpKTsKICAgICBjaGVja0Nv
bnNpc3RlbmN5KERlc3RydWN0b3JDb25zaXN0ZW5jeUNoZWNrKTsKIAogICAgIGRlbGV0ZSBtX3N0
b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXA7CiAgICAgZmFzdEZyZWUobV9zdG9yYWdlLT5tX2FsbG9j
QmFzZSk7CiB9CiAKK3ZvaWQgSlNBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAg
anNDYXN0PEpTQXJyYXkqPihjZWxsKS0+SlNBcnJheTo6fkpTQXJyYXkoKTsKK30KKwogYm9vbCBK
U0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKaW5kZXggZTk1OGQ1NTJmMmZlY2Y0YmQxN2Q5ZmM1ZWE4NTRlNmU2
ZmJjOGNlMi4uMWVhZDgyYzg2OWQxMzcxYzEyN2Y3MWFjZmNjZjc3MTBmZjQ3Y2JhMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNzEsOCArNzEsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOwogCi0gICAgICAgIEpTQXJyYXkoVlB0clN0ZWFsaW5nSGFja1R5cGUpOwotICAgICAg
ICB2aXJ0dWFsIH5KU0FycmF5KCk7CisgICAgICAgIH5KU0FycmF5KCk7CisgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7CkBAIC0yMTYsOCArMjE2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBh
c0FycmF5KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTQXJy
YXkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0NlbGwqIGNlbGwpIHsgcmV0dXJuIGNlbGwt
PnZwdHIoKSA9PSBnbG9iYWxEYXRhLT5qc0FycmF5VlB0cjsgfQotICAgIGlubGluZSBib29sIGlz
SlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiBpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgdi5hc0NlbGwoKSk7IH0KKyAgICBpbmxp
bmUgYm9vbCBpc0pTQXJyYXkoSlNDZWxsKiBjZWxsKSB7IHJldHVybiBjZWxsLT5jbGFzc0luZm8o
KSA9PSAmSlNBcnJheTo6c19pbmZvOyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTVmFs
dWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc0pTQXJyYXkodi5hc0NlbGwoKSk7IH0KIAog
ICAgIC8vIFJ1bGUgZnJvbSBFQ01BIDE1LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4K
ICAgICAvLyBNdXN0IGV4YWN0bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4gdW5zaWduZWQgaW50
ZWdlciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMyIC0gMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IGNmMGJhODM1ODU4YjNiM2E1
ZTE0N2RlZDU2ODM2MzczM2I3MWY3Y2YuLjBlNWE5OWFlNWJmODY4ZTAzMDYxOTMzMTRjZGU4ZWI2
ZjRiYzE5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoSlNCb3VuZEZ1bmN0aW9uKTsKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKEpTQm91bmRGdW5jdGlvbik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0JvdW5k
RnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0JvdW5kRnVuY3Rpb24pIH07CiAKQEAgLTM4LDcgKzM5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgQVNTRVJUKGlzSlNB
cnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkpOyAv
LyBDdXJyZW50bHkgdGhpcyBpcyB0cnVlIQorICAgIEFTU0VSVChpc0pTQXJyYXkoYm91bmRGdW5j
dGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKICAgICBKU0Fy
cmF5KiBib3VuZEFyZ3MgPSBhc0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKTsKIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC01OCw3ICs1OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgQVNTRVJUKGlzSlNBcnJh
eSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkpOyAvLyBD
dXJyZW50bHkgdGhpcyBpcyB0cnVlIQorICAgIEFTU0VSVChpc0pTQXJyYXkoYm91bmRGdW5jdGlv
bi0+Ym91bmRBcmdzKCkpKTsgLy8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKICAgICBKU0FycmF5
KiBib3VuZEFyZ3MgPSBhc0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAKaW5kZXggOTk3M2M1NjYxYjJlOTcyMTcyMTVjNGIzNjZjNzdj
NDBlNzE4NzBhNC4uNzQ3OGEwOGZiYTQ5Mzk0N2U4YWM2Zjg2OGQ1NGIxNWU2NWQ1ZGIyMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAtNDEs
MTMgKzQxLDE1IEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhCiB7CiB9CiAgICAgICAgIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKIEpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkoKQogewotICAgIEFT
U0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHIpOworICAgIEFTU0VS
VChqc0Nhc3Q8SlNCeXRlQXJyYXkqPih0aGlzKSk7CiB9Ci0jZW5kaWYKIAordm9pZCBKU0J5dGVB
cnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTQnl0ZUFycmF5Kj4o
Y2VsbCktPkpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkoKTsKK30KIAogU3RydWN0dXJlKiBKU0J5
dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBjbGFzc0luZm8pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuaAppbmRleCAwMDQxZDE0YzQ0MDAxNThiM2VhZTFiM2FlZjJkNGFlZDlmZTFmZjNl
Li41MTIyYmFkNWVmYTQ3M2I2ODg0MGYxMzYwNGRhNzllNDljMzUxZDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTEwMiw5ICsxMDIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RvcmFnZS5nZXQoKTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAg
ICAgICB2aXJ0dWFsIH5KU0J5dGVBcnJheSgpOwotI2VuZGlmCisgICAgICAgIH5KU0J5dGVBcnJh
eSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTdG9yYWdlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
Qnl0ZUFycmF5LCBtX3N0b3JhZ2UpOyB9CiAKQEAgLTExOCwxMSArMTE3LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQnl0ZUFycmF5KFZQ
dHJTdGVhbGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KFZQdHJT
dGVhbGluZ0hhY2spCi0gICAgICAgIHsKLSAgICAgICAgfQotCiAgICAgICAgIFJlZlB0cjxXVEY6
OkJ5dGVBcnJheT4gbV9zdG9yYWdlOwogICAgIH07CiAgICAgCkBAIC0xMzIsNyArMTI2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0J5dGVBcnJheSo+
KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTQnl0ZUFycmF5
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgp
ICYmIHYuYXNDZWxsKCktPnZwdHIoKSA9PSBnbG9iYWxEYXRhLT5qc0J5dGVBcnJheVZQdHI7IH0K
KyAgICBpbmxpbmUgYm9vbCBpc0pTQnl0ZUFycmF5KEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0Nl
bGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSAmSlNCeXRlQXJyYXk6OnNfaW5mbzsg
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKaW5kZXggNDkxZWYwODEzZmU4NThkNGQzODY1NjQ3ZDY4ZmExYWNiN2JjMGFlMS4u
MDY1ZmQxM2VhYTEyZjViZmVjYTU4YjJlOGFkMjQwZjkxNWU3ZGIwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNDZWxsKTsKKwordm9p
ZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGNlbGwtPkpTQ2VsbDo6fkpT
Q2VsbCgpOworfQorCiBib29sIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0
cmluZyZzdHJpbmdWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzU3RyaW5nKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDc2Y2VmMDQ1YTY5MTk5MjVjMGQ3Nzhi
M2Y4MzdlNmMyZDY4Zjc0N2MuLmM3NTVhNjAzZDI2NzY4MTAyOWM1ZDAxZjVhMzVkMWJmN2FkNzY0
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC02NSwxNSArNjUs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gQ3JlYXRpbmdFYXJseUNlbGxUYWcg
eyBDcmVhdGluZ0Vhcmx5Q2VsbCB9OwogICAgICAgICBKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxU
YWcpOwogCi0gICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdI
YWNrIH07Ci0gICAgICAgIGV4cGxpY2l0IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrVHlwZSkgeyB9
Ci0KICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlv
bjsgfSAvLyBVc2VkIGZvciBpbml0aWFsaXphdGlvbiBhZnRlciBHQyBhbGxvY2F0aW9uLgogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
Ci0gICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOyAvLyBJbnZva2VkIGJ5IEdDIGZpbmFsaXphdGlv
bi4KKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCkBAIC0xMDgsNiArMTA1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2Jq
ZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdDsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiB2YWxpZGF0ZWRDbGFzc0luZm8o
KSBjb25zdDsKICAgICAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSk7CkBAIC0xMTcsOCArMTE1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0
YXRlKik7CiAKLSAgICAgICAgdm9pZCogdnB0cigpIGNvbnN0IHsgQVNTRVJUKCFpc1phcHBlZCgp
KTsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqIGNvbnN0Kj4odGhpcyk7IH0KLSAgICAg
ICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0
aGlzKSA9IHZwdHI7IEFTU0VSVCghaXNaYXBwZWQoKSk7IH0KICAgICAgICAgdm9pZCB6YXAoKSB7
ICpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KICAgICAgICAgYm9v
bCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Qq
IGNvbnN0Kj4odGhpcyk7IH0KIApAQCAtMTMzLDYgKzEyOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1f
c3RydWN0dXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJ
bmZvT2Zmc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0NlbGwsIG1fY2xhc3NJbmZvKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9p
ZCogc3RydWN0dXJlQWRkcmVzcygpCiAgICAgICAgIHsKQEAgLTE2NiwxMyArMTY3LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFz
c0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAg
IH07Ci0gICAgCi0gICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgdGhpcywgc3RydWN0dXJlKQotICAgIHsKLSAgICB9CiAKICAgICBpbmxpbmUgSlNDZWxs
OjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgewpAQCAtMTg5LDI1ICsxODYsMTQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CiAgICAgfQog
Ci0gICAgaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKLSAg
ICB7Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgICAgIEFTU0VSVChnbG9iYWxEYXRh
LmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxp
emluZ09iamVjdChmYWxzZSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0jZW5kaWYKLSAgICAg
ICAgICAgIG1fc3RydWN0dXJlLnNldEVhcmx5VmFsdWUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0
dXJlKTsKLSAgICAgICAgLy8gVmVyeSBmaXJzdCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2
ZSBhIHJlYWwgc3RydWN0dXJlLgotICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIWdsb2Jh
bERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNDZWxsOjp+
SlNDZWxsKCkKKyAgICBpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0
CiAgICAgeworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCi0gICAg
aW5saW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAorICAgIGlubGluZSBj
b25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fY2xhc3NJbmZvOwog
ICAgIH0KIAogICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAwODEyZjIxYzJhMjEzYThiZjFjNDliZDc2MGQ2MzQxM2Nl
OGY2ODEzLi40ZTA1NTM1MmRkNWZmMmIyN2I3OTFiYzYzNDQ1ZDA5MTMyODI2MWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNzMsMTEgKzcz
LDYgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW4KICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAK
LUpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgOiBCYXNl
KFZQdHJTdGVhbGluZ0hhY2spCi17Ci19Ci0KIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICA6IEJhc2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X2V4ZWN1dGFibGUoKQpAQCAtMTEzLDE0ICsxMDgsMTEgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwKICAgICBwdXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9k
ZS0+Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZh
bHVlKCkpOwogfQogCi1KU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCit2b2lkIEpTRnVuY3Rpb246
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxE
YXRhOjpqc0Z1bmN0aW9uVlB0cik7Ci19Ci0KLXZvaWQgSlNGdW5jdGlvbjo6dnRhYmxlQW5jaG9y
KCkKLXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIldlIG5lZWQgc29tZXRoaW5nIGhlcmUgdGhhdCBW
aXN1YWwgU3R1ZGlvIGNhbid0IG9wdGltaXplIGF3YXkuXG4iKTsKKyAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlQodGhpc09i
amVjdC0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZigmSlNGdW5jdGlvbjo6c19pbmZvKSk7Cisg
ICAgdGhpc09iamVjdC0+SlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24oKTsKIH0KIAogdm9pZCBjcmVh
dGVEZXNjcmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgY2hhciogbWVzc2FnZSkKQEAgLTEzOCw3ICsx
MzAsNyBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsK
ICAgICAKLSAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBkaXNwbGF5TmFtZSkpCisgICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoZGlz
cGxheU5hbWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRW
YWx1ZSgpOwogICAgIAogICAgIHJldHVybiBVU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYjc1MzMyYTU3NDAxNDI2MDNiOWRkYTliZDdl
NGZhMTY2NzM2MmE1My4uOTg4YWUxMjEzZTViNTlmODg1YmMwN2Y5NzQ4MzVkMjNlM2Y3NDk3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMzUsNyAr
MzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBj
bGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7Ci0gICAgY2xhc3Mg
VlB0ckhhY2tFeGVjdXRhYmxlOwogICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIFNwZWN1
bGF0aXZlSklUOwogICAgIGNsYXNzIEpJVENvbXBpbGVyOwpAQCAtNjUsOCArNjQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgdnRhYmxlQW5jaG9yKCk7IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIG9wdGltaXphdGlv
bnMgbm8gbG9uZ2VyIHJlbHkgb24gdGVzdGluZyB2dGFibGVzCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3Rh
dGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKQEAg
LTE0NCw4ICsxNDIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgZXhwbGljaXQgSlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7Ci0KICAgICAgICAg
Ym9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBK
U1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAppbmRleCBhNTM1ZmMyNDdkYjI4NDg2MWJlOTNkOGJhYTYxYWY3ZDc0ODgzMDNlLi4yMmU3Njkz
ZGNmYjZjMTAzOWMwNzRjZGY2N2ExODkyMThmNTIyZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTEwOSwxMiArMTA5LDYgQEAgZXh0
ZXJuIGNvbnN0IEhhc2hUYWJsZSByZWdFeHBQcm90b3R5cGVUYWJsZTsKIGV4dGVybiBjb25zdCBI
YXNoVGFibGUgc3RyaW5nVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHN0cmluZ0NvbnN0
cnVjdG9yVGFibGU7CiAKLXZvaWQqIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdFZQdHI7Ci12
b2lkKiBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyOwotdm9pZCogSlNHbG9iYWxEYXRhOjpqc0J5
dGVBcnJheVZQdHI7Ci12b2lkKiBKU0dsb2JhbERhdGE6OmpzU3RyaW5nVlB0cjsKLXZvaWQqIEpT
R2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHI7Ci0KICNpZiBDT01QSUxFUihHQ0MpCiAvLyBXb3Jr
IGFyb3VuZCBmb3IgZ2NjIHRyeWluZyB0byBjb2FsZXNjZSBvdXIgcmVhZHMgb2YgdGhlIHZhcmlv
dXMgY2VsbCB2cHRycwogI2RlZmluZSBDTE9CQkVSX01FTU9SWSgpIGRvIHsgXApAQCAtMTI0LDUy
ICsxMTgsNiBAQCB2b2lkKiBKU0dsb2JhbERhdGE6OmpzRnVuY3Rpb25WUHRyOwogI2RlZmluZSBD
TE9CQkVSX01FTU9SWSgpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAotdm9pZCBKU0ds
b2JhbERhdGE6OnN0b3JlVlB0cnMoKQotewotICAgIC8vIEVub3VnaCBzdG9yYWdlIHRvIGZpdCBh
IEpTQXJyYXksIEpTQnl0ZUFycmF5LCBKU1N0cmluZywgb3IgSlNGdW5jdGlvbi4KLSAgICAvLyBD
T01QSUxFX0FTU0VSVFMgYmVsb3cgY2hlY2sgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgY2hhciBz
dG9yYWdlWzY0XTsKLQotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0ZpbmFsT2JqZWN0KSA8
PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0ZpbmFsT2JqZWN0X211c3RfYmVfbGVzc190aGFu
X3N0b3JhZ2UpOwotICAgIEpTQ2VsbCoganNGaW5hbE9iamVjdCA9IG5ldyAoc3RvcmFnZSkgSlNG
aW5hbE9iamVjdChKU0ZpbmFsT2JqZWN0OjpWUHRyU3RlYWxpbmdIYWNrKTsKLSAgICBDTE9CQkVS
X01FTU9SWSgpOwotICAgIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdFZQdHIgPSBqc0ZpbmFs
T2JqZWN0LT52cHRyKCk7Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNBcnJheSkgPD0g
c2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNBcnJheV9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdl
KTsKLSAgICBKU0NlbGwqIGpzQXJyYXkgPSBuZXcgKHN0b3JhZ2UpIEpTQXJyYXkoSlNBcnJheTo6
VlB0clN0ZWFsaW5nSGFjayk7Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERh
dGE6OmpzQXJyYXlWUHRyID0ganNBcnJheS0+dnB0cigpOwotCi0gICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEpTQnl0ZUFycmF5KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0J5dGVBcnJh
eV9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzQnl0ZUFycmF5ID0g
bmV3IChzdG9yYWdlKSBKU0J5dGVBcnJheShKU0J5dGVBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7
Ci0gICAgQ0xPQkJFUl9NRU1PUlkoKTsKLSAgICBKU0dsb2JhbERhdGE6OmpzQnl0ZUFycmF5VlB0
ciA9IGpzQnl0ZUFycmF5LT52cHRyKCk7Ci0KLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNT
dHJpbmcpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTU3RyaW5nX211c3RfYmVfbGVzc190
aGFuX3N0b3JhZ2UpOwotICAgIEpTQ2VsbCoganNTdHJpbmcgPSBuZXcgKHN0b3JhZ2UpIEpTU3Ry
aW5nKEpTU3RyaW5nOjpWUHRyU3RlYWxpbmdIYWNrKTsKLSAgICBDTE9CQkVSX01FTU9SWSgpOwot
ICAgIEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRyID0ganNTdHJpbmctPnZwdHIoKTsKLQotICAg
IENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0Z1bmN0aW9uKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNp
emVvZl9KU0Z1bmN0aW9uX211c3RfYmVfbGVzc190aGFuX3N0b3JhZ2UpOwotICAgIEpTQ2VsbCog
anNGdW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNGdW5jdGlvbihKU0NlbGw6OlZQdHJTdGVhbGlu
Z0hhY2spOwotICAgIENMT0JCRVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0Z1bmN0
aW9uVlB0ciA9IGpzRnVuY3Rpb24tPnZwdHIoKTsKLQotICAgIC8vIFVudGlsIHdlIGZ1bGx5IHJl
bW92ZSBvdXIgcmVsaWFuY2Ugb24gdnB0cnMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgZXZl
cnlib2R5IHRoYXQgCi0gICAgLy8gd2UgdGhpbmsgaGFzIGEgdW5pcXVlIHZpcnR1YWwgcG9pbnRl
ciBhY3R1YWxseSBkb2VzLgotICAgIGlmIChqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0FycmF5VlB0
cgotICAgICAgICB8fCBqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0J5dGVBcnJheVZQdHIKLSAgICAg
ICAgfHwganNGaW5hbE9iamVjdFZQdHIgPT0ganNTdHJpbmdWUHRyCi0gICAgICAgIHx8IGpzRmlu
YWxPYmplY3RWUHRyID09IGpzRnVuY3Rpb25WUHRyCi0gICAgICAgIHx8IGpzQXJyYXlWUHRyID09
IGpzQnl0ZUFycmF5VlB0cgotICAgICAgICB8fCBqc0FycmF5VlB0ciA9PSBqc1N0cmluZ1ZQdHIK
LSAgICAgICAgfHwganNBcnJheVZQdHIgPT0ganNGdW5jdGlvblZQdHIKLSAgICAgICAgfHwganNC
eXRlQXJyYXlWUHRyID09IGpzU3RyaW5nVlB0cgotICAgICAgICB8fCBqc0J5dGVBcnJheVZQdHIg
PT0ganNGdW5jdGlvblZQdHIKLSAgICAgICAgfHwganNTdHJpbmdWUHRyID09IGpzRnVuY3Rpb25W
UHRyKQotICAgICAgICBDUkFTSCgpOwotfQotCiBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZFN0YWNr
VHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCiAgICAgOiBnbG9iYWxEYXRhVHlwZShnbG9iYWxEYXRh
VHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggMTM5ZGQ0MjUxZDJmMjA0NGFhZmIwODZmN2NiYjRlNThh
ZDFiOWY5MC4uMTYxOWY5Mjk3MGVkNzc5YmRiZjRiNmM4MmFkZGRiYzAxZGU0N2MyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTEwNSwxOCAr
MTA1LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IFR5cGVkQXJyYXlEZXNjcmlw
dG9yIHsKICAgICAgICAgVHlwZWRBcnJheURlc2NyaXB0b3IoKQotICAgICAgICAgICAgOiBtX3Zw
dHIoMCkKKyAgICAgICAgICAgIDogbV9jbGFzc0luZm8oMCkKICAgICAgICAgICAgICwgbV9zdG9y
YWdlT2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fbGVuZ3RoT2Zmc2V0KDApCiAgICAgICAgIHsK
ICAgICAgICAgfQotICAgICAgICBUeXBlZEFycmF5RGVzY3JpcHRvcih2b2lkKiB2cHRyLCBzaXpl
X3Qgc3RvcmFnZU9mZnNldCwgc2l6ZV90IGxlbmd0aE9mZnNldCkKLSAgICAgICAgICAgIDogbV92
cHRyKHZwdHIpCisgICAgICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yKGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBzaXplX3Qgc3RvcmFnZU9mZnNldCwgc2l6ZV90IGxlbmd0aE9mZnNldCkKKyAg
ICAgICAgICAgIDogbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICAgICAgICAgLCBtX3N0b3Jh
Z2VPZmZzZXQoc3RvcmFnZU9mZnNldCkKICAgICAgICAgICAgICwgbV9sZW5ndGhPZmZzZXQobGVu
Z3RoT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCogbV92cHRyOwor
ICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBzaXplX3QgbV9z
dG9yYWdlT2Zmc2V0OwogICAgICAgICBzaXplX3QgbV9sZW5ndGhPZmZzZXQ7CiAgICAgfTsKQEAg
LTE5MywxMyArMTkzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJl
Q2hhaW5TdHJ1Y3R1cmU7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwotICAg
ICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cjsKLSAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7Ci0gICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIHZvaWQqIGpzQnl0ZUFycmF5VlB0cjsKLSAgICAgICAgc3RhdGljIEpT
X0VYUE9SVERBVEEgdm9pZCoganNTdHJpbmdWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSB2b2lkKiBqc0Z1bmN0aW9uVlB0cjsKLQogICAgICAgICBJZGVudGlmaWVyVGFibGUqIGlk
ZW50aWZpZXJUYWJsZTsKICAgICAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7
CiAgICAgICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7IC8vIExpc3Rz
IGFyZSBzdXBwb3NlZCB0byBiZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHRvIGhhdmUgdGhlaXIg
ZWxlbWVudHMgcHJvcGVybHkgbWFya2VkLCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZSAtIGJ1
dCB0aGlzIGxpc3QgaGFzIG5vdGhpbmcgdG8gbWFyay4KQEAgLTM0MCw3ICszMzMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICNkZWZpbmUgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24odHlwZSwgY2Fw
aXRhbGl6ZWRUeXBlKSBcCiAgICAgICAgIHZvaWQgcmVnaXN0ZXJUeXBlZEFycmF5RGVzY3JpcHRv
cihjb25zdCBjYXBpdGFsaXplZFR5cGUjI0FycmF5KiwgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpIFwKICAgICAgICAgeyBcCi0gICAgICAgICAgICBBU1NFUlQoIW1fIyN0
eXBlIyNBcnJheURlc2NyaXB0b3IubV92cHRyIHx8IG1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3Iu
bV92cHRyID09IGRlc2NyaXB0b3IubV92cHRyKTsgXAorICAgICAgICAgICAgQVNTRVJUKCFtXyMj
dHlwZSMjQXJyYXlEZXNjcmlwdG9yLm1fY2xhc3NJbmZvIHx8IG1fIyN0eXBlIyNBcnJheURlc2Ny
aXB0b3IubV9jbGFzc0luZm8gPT0gZGVzY3JpcHRvci5tX2NsYXNzSW5mbyk7IFwKICAgICAgICAg
ICAgIG1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yOyBcCiAgICAgICAgIH0g
XAogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgdHlwZSMjQXJyYXlEZXNjcmlw
dG9yKCkgY29uc3QgeyByZXR1cm4gbV8jI3R5cGUjI0FycmF5RGVzY3JpcHRvcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM0
Mjk4NWMxNGZiYjJhNjQxOGQ2ZDUzYTczODI5MWMxMzgxNjhkYzkuLjQyMGJjODljMWJkYjI4YjY4
ZGZmZDE3YzgxZmI3ODQ0ZmU3ZTRhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEyMiw2ICsxMjIsMTEgQEAgSlNHbG9iYWxP
YmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCiAgICAgfQogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihj
ZWxsKS0+SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpOworfQorCiB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpCiB7CiAgICAgQVNTRVJUKEpTTG9j
azo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZjkzY2Q4YjE4MTAxMzM4YzUyY2Fj
Yzg1YTNhZDNhMDAzYzJjN2QxLi43ODJlM2EzYzEzYjQzMjU0Zjk0NWZhNjk1Y2IyOGQxYTljMDcw
YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTE5Myw3ICsxOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOworICAgICAgICB+SlNH
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhp
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwCmlu
ZGV4IDg1YmZiN2EzODY2NjQ5MzM2OTdmZmM2NzI1YmNjYTVjZTUwMzljYTQuLjhiMmE3YTFlZjUx
ZTI0ZTcxODZlNzYwMGY0YmYxNTZhZTUyMDVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNHbG9iYWxUaGlzKTsKK0FTU0VS
VF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTR2xvYmFsVGhpcyk7CiAKIGNvbnN0IENsYXNzSW5m
byBKU0dsb2JhbFRoaXM6OnNfaW5mbyA9IHsgIkpTR2xvYmFsVGhpcyIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxUaGlzKSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCmluZGV4IDkxZjkwZDYy
NDAxOTg5ZDg4N2RiMDZmZTAyOWU1Zjc1YTJmMzQyMjYuLjY4MjQwMDI5MjdkZTkwYTg5M2I0OTky
MWFkNDk2NTAzMmMxNzFiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTm90QW5PYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU05vdEFuT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJ
VklBTF9ERVNUUlVDVE9SKEpTTm90QW5PYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gSlNOb3RB
bk9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU05vdEFuT2JqZWN0KSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGVhNGMxYWQ2NjdhOWNhNTdmNTU1YzYwNDRh
MTMzYzQ2YWY3NjJlMzQuLjA1YzZjMjk1MzVlZjI1YzNkZmJhMDUyODM0YjFlN2U4YmRiNWY3MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC00
Myw2ICs0Myw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChKU09OT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTT05PYmplY3Qp
OwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFy
c2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09O
UHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSopOwpAQCAtNDk1LDcgKzQ5Niw3IEBAIGJvb2wg
U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJp
bmdpZmllciwgVVN0cmluZ0J1CiAgICAgLy8gRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXpl
LgogICAgIGlmICghbV9pbmRleCkgewogICAgICAgICBpZiAobV9pc0FycmF5KSB7Ci0gICAgICAg
ICAgICBtX2lzSlNBcnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVj
dC5nZXQoKSk7CisgICAgICAgICAgICBtX2lzSlNBcnJheSA9IGlzSlNBcnJheShtX29iamVjdC5n
ZXQoKSk7CiAgICAgICAgICAgICBtX3NpemUgPSBtX29iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTY2OSw3ICs2
NzAsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRl
cmVkKQogICAgICAgICAgICAgYXJyYXlTdGFydFN0YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJh
eVN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgp
KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEo
KSwgYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cygmSlNB
cnJheTo6c19pbmZvKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzSlNBcnJheShhc09iamVj
dChpblZhbHVlKSkgfHwgYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2lu
Zm8pKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFj
ay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMp
KTsKIApAQCAtNjk0LDcgKzY5NSw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2Fs
ayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2sucmVt
b3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFy
cmF5KSAmJiBhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAgICAgICAgICAgIGlmIChp
c0pTQXJyYXkoYXJyYXkpICYmIGFycmF5LT5jYW5HZXRJbmRleChpbmRleCkpCiAgICAgICAgICAg
ICAgICAgICAgIGluVmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTcx
Nyw3ICs3MTgsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1
bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVk
KCkpCiAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoYXJyYXksIG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCkpOwogICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMt
Pmdsb2JhbERhdGEoKSwgYXJyYXkpICYmIGFycmF5LT5jYW5TZXRJbmRleChpbmRleFN0YWNrLmxh
c3QoKSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYXJyYXkpICYmIGFycmF5
LT5jYW5TZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBhcnJheS0+c2V0SW5kZXgobV9leGVjLT5nbG9iYWxEYXRhKCksIGluZGV4U3RhY2subGFzdCgp
LCBmaWx0ZXJlZFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoYXJyYXksIG1fZXhl
YywgaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOwpAQCAtNzMwLDcgKzczMSw3IEBA
IE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAg
ICAgICAgICAgICBvYmplY3RTdGFydFN0YXRlOgogICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFy
dFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKCFpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBh
c09iamVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cygmSlNBcnJh
eTo6c19pbmZvKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpc0pTQXJyYXkoYXNPYmplY3Qo
aW5WYWx1ZSkpICYmICFhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5m
bykpOwogICAgICAgICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBhcnJheVN0YWNr
LnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykp
OwogCkBAIC03OTcsNyArNzk4LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChp
blZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERh
dGEoKSwgb2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQorICAg
ICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkob2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZK
U0FycmF5OjpzX2luZm8pKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5U3RhcnRTdGF0
ZTsKICAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0U3RhdGU7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAxNGYwOTM1OTY3
NmM3NWU3M2FlNTViNWNhMmExZjIzMzI0NGIzMmZiLi45Y2MyOTYxN2FlMmEyZTkzMzk1ODRlMDI1
YWU4NDAyMmIyZTAxZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC00NiwxNSArNDYsMjIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU09i
amVjdCk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTTm9uRmluYWxPYmplY3QpOwogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0ZpbmFsT2JqZWN0KTsKIAorQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoSlNPYmplY3QpOworCiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IgPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iOwogCiBjb25zdCBDbGFzc0luZm8gSlNPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVj
dCIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNPYmplY3QpIH07CiAKIGNvbnN0IENs
YXNzSW5mbyBKU0ZpbmFsT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmluYWxPYmplY3QpIH07CiAKLXZvaWQgSlNG
aW5hbE9iamVjdDo6dnRhYmxlQW5jaG9yKCkKK3ZvaWQgSlNGaW5hbE9iamVjdDo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKS0+SlNGaW5h
bE9iamVjdDo6fkpTRmluYWxPYmplY3QoKTsKK30KKwordm9pZCBKU05vbkZpbmFsT2JqZWN0Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBwcmludGYoIlNvbWV0aGluZyBWaXN1YWwgU3R1
ZGlvIGNhbid0IG9wdGltaXplIGF3YXkuXG4iKTsKKyAgICBqc0Nhc3Q8SlNOb25GaW5hbE9iamVj
dCo+KGNlbGwpLT5KU05vbkZpbmFsT2JqZWN0Ojp+SlNOb25GaW5hbE9iamVjdCgpOwogfQogCiBz
dGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKQEAgLTgxLDggKzg4LDkgQEAgdm9pZCBKU09iamVj
dDo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAgIGRlbGV0ZSBbXSBqc0Nhc3Q8SlNPYmplY3Qq
PihjZWxsKS0+bV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnZ0
YWJsZUFuY2hvcigpCit2b2lkIEpTT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAg
ICBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKS0+SlNPYmplY3Q6On5KU09iamVjdCgpOwogfQogCiB2
b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBmNTY4
ZDQyYTQ2ZjIxOGNmYTRlOGJjZTgyM2EyOWRiOTdhNGM0NmU2Li4zNjNlYzMwNjEzZThjZjkyNzZl
MDhmN2EzZjhmODExNjM4YWYxOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTgwLDcgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2dGFi
bGVBbmNob3IoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
QEAgLTI0Myw2ICsyNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChw
cm90b3R5cGUoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJv
dG90eXBlKCkpKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lU3RvcmFnZSwgc3Rh
dGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlz
ICsgMSkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc09iamVjdCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTI1NSwx
MSArMjU2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRvIGluc3RhbnRpYXRlIG9i
amVjdHMgeW91IGxpa2VseSB3YW50IEpTRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICAvLyBU
byBjcmVhdGUgZGVyaXZlZCB0eXBlcyB5b3UgbGlrZWx5IHdhbnQgSlNOb25GaW5hbE9iamVjdCwg
YmVsb3cuCiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKLSAgICAgICAgSlNPYmplY3QoVlB0clN0ZWFsaW5n
SGFja1R5cGUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQotICAgICAgICAgICAgOiBK
U0NlbGwoVlB0clN0ZWFsaW5nSGFjaykKLSAgICAgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2Uo
aW5saW5lU3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCkKLSAgICAgICAgewotICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNr
IGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUg
YSBKU09iamVjdC4KQEAgLTMxOSwxMiArMzE1LDkgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QK
ICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAm
c19pbmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3Qo
VlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJTdGVhbGlu
Z0hhY2ssIG1faW5saW5lU3RvcmFnZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgCiAgICAg
ICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKQEAgLTMzNSw2ICszMjgsNyBA
QCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0g
SlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdAogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSwgbV9pbmxpbmVTdG9yYWdlKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9C
SkVDVF9PRkZTRVRPRihKU05vbkZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9m
KGRvdWJsZSkpKTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSk7CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkpOwogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgpAQCAtMzQ5LDExICszNDMsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdAog
ICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOwogCi0gICAgICAgIGV4
cGxpY2l0IEpTRmluYWxPYmplY3QoVlB0clN0ZWFsaW5nSGFja1R5cGUpCi0gICAgICAgICAgICA6
IEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKLSAgICAgICAgewot
ICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpTRmluYWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNG
aW5hbE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpOwpAQCAtMzc0LDIxICszNjMsMzIgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxPYmplY3RfaW5s
aW5lU3QKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG1faW5s
aW5lU3RvcmFnZSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5h
bE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7CiAgICAgICAgICAg
ICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0g
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJU
KGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9y
KCk7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4gbV9pbmxpbmVTdG9yYWdlW0pTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5XTsK
ICAgICB9OwogCitpbmxpbmUgYm9vbCBpc0pTRmluYWxPYmplY3QoSlNDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBjZWxsLT5jbGFzc0luZm8oKSA9PSAmSlNGaW5hbE9iamVjdDo6c19pbmZvOwor
fQorCitpbmxpbmUgYm9vbCBpc0pTRmluYWxPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdmFsdWUuaXNDZWxsKCkgJiYgaXNKU0ZpbmFsT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKTsK
K30KKwogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkKIHsK
ICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFn
ZSkgPT0gT0JKRUNUX09GRlNFVE9GKEpTTm9uRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcAppbmRleCBmNDMxMDQyOWE3N2I2NjE4MGQ0M2VkYmFlYTM3YjhkNjQ2
MGY4YTU3Li43MjA3YTRjNWNjY2RiZGEyYTc1MDQ1NTMxZTk0OWJlMWUwNGZkOWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAg
ICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKIH0KIAordm9pZCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcio+KGNlbGwpLT5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcigpOworfQorCiBKU1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Omdl
dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBzaXplX3QgaSkKIHsKICAgICBKU1Zh
bHVlIGlkZW50aWZpZXIgPSBtX2pzU3RyaW5nc1tpXS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCA5
N2E1MDMyNmJkYzllY2M0Yjk4MjRlMmY1MmNlNmMyMDYwYjU2NGQyLi5jZTJlNDRlODExYjNjNjRi
MjQ1Zjg5MTUwODYwMGNkZjdhNDE2MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC01Miw3ICs1Miw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKKyAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
Q29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3Bw
CmluZGV4IGQ5MGM2OGM4MDFiNjNlMWU5OTc2NTY4NjQ2NzQ4ZDc1Y2ZiMDk0ZDcuLjMwODRmM2Yy
OTY2NTUxMDk1NTVjNTUyMjU5ZWNkNTQ4M2FkOGFhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCkBAIC0zNCw2ICsz
NCwxMSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTU3RhdGljU2NvcGVPYmplY3QpOwog
CiBjb25zdCBDbGFzc0luZm8gSlNTdGF0aWNTY29wZU9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1N0YXRpY1Njb3Bl
T2JqZWN0KSB9OwogCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQoreworICAgIGpzQ2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCktPkpTU3RhdGlj
U2NvcGVPYmplY3Q6On5KU1N0YXRpY1Njb3BlT2JqZWN0KCk7Cit9CisKIHZvaWQgSlNTdGF0aWNT
Y29wZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNT
dGF0aWNTY29wZU9iamVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmluZGV4IDIzYTNhY2FkNzhjZWU0ZTc2MDc5
ZTg5ZTJhYTQ1ZjA1NWZkNTJmZmYuLmRlMGI4MTYyMTc4OTc5ZTYwMTAzYWIzMjI2ZWIxZGJhMDMy
NDBiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRp
Y1Njb3BlT2JqZWN0LmgKQEAgLTY3LDcgKzY3LDkgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAg
ICAgIDogSlNWYXJpYWJsZU9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5zdGF0aWNTY29wZVN0cnVjdHVyZS5nZXQoKSwgJm1fc3ltYm9sVGFibGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8UmVnaXN0ZXIqPigmbV9yZWdpc3RlclN0b3JlICsgMSkpCiAgICAgICAgIHsKICAg
ICAgICAgfQotICAgICAgICAKKworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OworCiAgICAgICAgIFN5bWJvbFRhYmxlIG1fc3ltYm9sVGFibGU7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiBtX3JlZ2lzdGVyU3RvcmU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCAwZTZhNDhhMDdhZjllM2I5YjczZjIzZDRh
ODI0ZDllYWZmYTA4N2RlLi42MmNjNTVjZmNjMDE4M2I1ZTMwMzgxYTRjMTE0YzdmNjRmZDBjMGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00NSw5
ICs0NSwxMCBAQCB2b2lkIEpTU3RyaW5nOjpSb3BlQnVpbGRlcjo6ZXhwYW5kKCkKICAgICBhcHBl
bmQoanNTdHJpbmcpOwogfQogCi1KU1N0cmluZzo6fkpTU3RyaW5nKCkKK3ZvaWQgSlNTdHJpbmc6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxE
YXRhOjpqc1N0cmluZ1ZQdHIpOworICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
U3RyaW5nKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNTdHJpbmc6On5KU1N0cmluZygpOwog
fQogCiB2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRl
eCA3Y2Y4MzgyMTlhNWJhNTNmMTdmYWJkODkwZGRlMmJjMmUyZDIwMmM0Li5kNTFhMjNmZjI4MzZj
OWQ3NjlhMmU3NWMxYjdhMjFlNGYzNmQyNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKQEAgLTY5LDYgKzY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCiAgICAgICAgIGNsYXNzIFJvcGVCdWlsZGVyIHsKICAgICAgICAgcHVibGljOgog
ICAgICAgICAgICAgUm9wZUJ1aWxkZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMTk3
LDggKzE5OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmlu
ZzsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgfkpTU3RyaW5nKCk7Ci0KICAgICAgICAg
Y29uc3QgVVN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoaXNSb3BlKCkpCkBAIC0yNDMsMTEgKzI0Myw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU1N0cmluZyhWUHRyU3RlYWxpbmdIYWNr
VHlwZSkgCi0gICAgICAgICAgICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQogICAgICAgICB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpAQCAtMjc5LDE2ICsy
NzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVl
KTsKIAotICAgIC8vIFdoZW4gYW4gb2JqZWN0IGlzIGNyZWF0ZWQgZnJvbSBhIGRpZmZlcmVudCBE
TEwsIE1TVkMgY2hhbmdlcyB2cHRyIHRvIGEgImxvY2FsIiBvbmUgcmlnaHQgYWZ0ZXIgaW52b2tp
bmcgYSBjb25zdHJ1Y3RvciwKLSAgICAvLyBzZWUgPGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9n
cm91cC9taWNyb3NvZnQucHVibGljLnZjLmxhbmd1YWdlL21zZy81NWNkY2VmZWFmNzcwMjEyPi4K
LSAgICAvLyBUaGlzIGJyZWFrcyBpc0pTU3RyaW5nKCksIGFuZCB3ZSBkb24ndCBuZWVkIHRoYXQg
aGFjayBhbnl3YXksIHNvIHdlIGNoYW5nZSB2cHRyIGJhY2sgdG8gcHJpbWFyeSBvbmUuCi0gICAg
Ly8gVGhlIGJlbG93IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJ5IGFueSBpbmxpbmUgZnVuY3Rp
b24gdGhhdCBpbnZva2VzIGEgSlNTdHJpbmcgY29uc3RydWN0b3IuCi0jaWYgQ09NUElMRVIoTVNW
QykgJiYgIWRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpCi0gICAgaW5saW5lIEpTU3Ry
aW5nKiBmaXh1cFZQdHIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1N0cmluZyogc3RyaW5n
KSB7IHN0cmluZy0+c2V0VlB0cihnbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpOyByZXR1cm4gc3Ry
aW5nOyB9Ci0jZWxzZQotICAgIGlubGluZSBKU1N0cmluZyogZml4dXBWUHRyKEpTR2xvYmFsRGF0
YSosIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQotI2VuZGlmCi0KICAgICBp
bmxpbmUgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBB
U1NFUlQodmFsdWUuYXNDZWxsKCktPmlzU3RyaW5nKCkpOwpAQCAtMzA0LDcgKzI4OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5n
bGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7Ci0gICAgICAgIHJldHVybiBmaXh1cFZQ
dHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmluZygmYywg
MSkuaW1wbCgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBVU3RyaW5nKCZjLCAxKS5pbXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyog
anNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5n
JiBzLCB1bnNpZ25lZCBvZmZzZXQpCkBAIC0zMTQsNyArMjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFVDaGFyIGMgPSBzW29mZnNldF07CiAgICAgICAgIGlmIChjIDw9IG1heFNpbmds
ZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwotICAgICAgICByZXR1
cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFN0
cmluZ0ltcGw6OmNyZWF0ZShzLmltcGwoKSwgb2Zmc2V0LCAxKSkpOworICAgICAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgp
LCBvZmZzZXQsIDEpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIHMpCkBAIC0zMjIs
MTMgKzMwNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKHMpOwogICAgICAg
ICBBU1NFUlQoc1swXSk7CiAgICAgICAgIEFTU0VSVChzWzFdKTsKLSAgICAgICAgcmV0dXJuIGZp
eHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBVU3RyaW5n
KHMpLmltcGwoKSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0
YSwgVVN0cmluZyhzKS5pbXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNO
b250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cykKICAgICB7CiAgICAgICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7Ci0gICAgICAgIHJldHVy
biBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5p
bXBsKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMu
aW1wbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIEpTU3RyaW5nOjpnZXRJbmRl
eChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCkBAIC0zNTAsNyArMzM1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBzLmlt
cGwoKSkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5p
bXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CkBAIC0zNzYsNyArMzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoYyA8
PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGdsb2Jh
bERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmlu
Zzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChz
LmltcGwoKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3Jl
YXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChzLmltcGwo
KSwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vi
c3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC0zOTEsNyArMzc2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZp
eHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFs
RGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBvZmZzZXQsIGxlbmd0aCkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBT
dHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgfQogCiAg
ICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgcykKQEAgLTQwNCwxMiArMzg5LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAg
ICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmaXh1cFZQ
dHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEs
IHMuaW1wbCgpKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25l
cigqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyog
anNTdHJpbmdCdWlsZGVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZU51bGwoKmdsb2Jh
bERhdGEpKTsKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVOdWxsKCpnbG9iYWxEYXRh
KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKSB7IHJldHVybiBqc0VtcHR5U3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCkpOyB9CkBA
IC00NDgsNyArNDMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPnZwdHIo
KSA9PSBnbG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHI7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0pTU3Ry
aW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0lu
Zm8oKSA9PSAmSlNTdHJpbmc6OnNfaW5mbzsgfQogCiAgICAgaW5saW5lIGJvb2wgSlNDZWxsOjp0
b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAKaW5kZXggOWYzOGVhOTg3
MmM0ZjcyYjExODNhZDFiZThjZTRmZmZhODAwNTk3Ny4uNzA2ZTNkZWJiYzNjZjZiNmZhMmIxZmZl
NjkzM2ZkOTUwOWNlMmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5jcHAKQEAgLTM3LDggKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLUpTVmFyaWFibGVPYmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KCkKK3ZvaWQgSlNWYXJp
YWJsZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PEpTVmFyaWFi
bGVPYmplY3QqPihjZWxsKS0+SlNWYXJpYWJsZU9iamVjdDo6fkpTVmFyaWFibGVPYmplY3QoKTsK
IH0KIAogYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmluZGV4IGU0
OWZiNzFkZjJlY2I5ZGY3OTZiMmU3YjhkZWQ5ZTc2ODRhYWQ4MzAuLjhhNWM1YTBmMzE0ZjkyZDYy
ZDNkNWU1NzM2NWVhYTNiNWZkZDRjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4g
Km1fc3ltYm9sVGFibGU7IH0KIAotICAgICAgICB2aXJ0dWFsIH5KU1ZhcmlhYmxlT2JqZWN0KCk7
CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGlj
IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3Jh
cHBlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuY3BwCmluZGV4IGNhNWJkODc1YzNkMGE2Y2JmNWE4ODJiOTFlNTZhNDg5Y2I5ZDc1ZDIu
LmY4ZjU3MjdkODJjZDY3Njk2MjI2ODE4ZWVlNzkwZDljZDQyZDEyYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcApAQCAtMjUsMTAg
KzI1LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpT
V3JhcHBlck9iamVjdCk7Ci0KLUpTV3JhcHBlck9iamVjdDo6fkpTV3JhcHBlck9iamVjdCgpCi17
Ci19CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1dyYXBwZXJPYmplY3QpOwogCiB2
b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAppbmRleCA3MzcxM2MwYjM0YzY0MjQyYTg0ZjJhZWRkMTdkNTE1NTk2YTEw
ZTQ2Li42NWI0YmRiN2Y2MWUwMDAxMTE1MmUxYTBkNWFjZTFlYWI3NzdkOTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtNDYsOCAr
NDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgdmlydHVhbCB+SlNXcmFwcGVy
T2JqZWN0KCk7Ci0gICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMDA2NTU5ZGRkYTQ4MmFiZmNhOWJlZDFhMGMx
NDVhNGE5MzA2ODcyZS4uNThiMDkxMjJkNGFjMmRlZTcyZTU2Y2NhZWU0MzJiNTVmZDQwNmNjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTU5
LDYgKzU5LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1RhbihFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJ
VklBTF9ERVNUUlVDVE9SKE1hdGhPYmplY3QpOworCiBjb25zdCBDbGFzc0luZm8gTWF0aE9iamVj
dDo6c19pbmZvID0geyAiTWF0aCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNT
dGF0ZTo6bWF0aFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3QpIH07CiAKIC8q
IFNvdXJjZSBmb3IgTWF0aE9iamVjdC5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBkZGU5Mjc4
NDhhZDhlMmVjZThjMDAzYmU3YWRiYzFhY2M0ZjRmYzY3Li5iNmFmZjkxNmU0ZGQ0YjhiMTIzOTY2
NDYzY2Q1ODY4MjczYThiMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShOYXRpdmVFcnJvckNvbnN0cnVjdG9yKSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MDg0YzYzZjE3ZThkMzEwZmNmNTNjNzEzNzU2YTFiOGFkN2U0N2MwMi4uZTg2M2U4NjMwOTgyMzg3
YjJhMjNlYTI4MTlmN2I4YWQwYThkNWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNDIsNiArNDIsOCBAQCBzdGF0
aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImKQogCiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoTnVtYmVyQ29uc3RydWN0b3IpOworCiBjb25zdCBDbGFzc0luZm8gTnVt
YmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246
OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE51bWJlckNvbnN0cnVjdG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIE51bWJlckNv
bnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
T2JqZWN0LmNwcAppbmRleCBiNzUxMDUzZmI5NjZiZGU4MmMwY2RhYmVlODQxNGJjNTA5YTg1ZjIx
Li4xZmVhMjU0NjQ3YTRlZDAzODI2NjkxNzY1NTQyNTgwZTk0YjNkYzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE51bWJlck9i
amVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihOdW1iZXJPYmplY3QpOwogCiBj
b25zdCBDbGFzc0luZm8gTnVtYmVyT2JqZWN0OjpzX2luZm8gPSB7ICJOdW1iZXIiLCAmSlNXcmFw
cGVyT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTnVtYmVyT2JqZWN0
KSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcAppbmRleCAzYmNiOWJiNWRjZjM0OTE4YzcxZmY2NjE5NTRjZWEyZjlmNjI3NWE3Li40
NjEyYjU2ZDJiYTU1ZTRjOTgzYzIzMzYyYjk2MTVhZjgzNDAzYTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTY5LDYgKzY5
LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE51bWJlclByb3RvdHlwZTo6c19pbmZvID0geyAiTnVtYmVy
IiwgJk51bWJlck9iamVjdDo6c19pbmZvLCAwLAogKi8KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChOdW1iZXJQcm90b3R5cGUpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTnVt
YmVyUHJvdG90eXBlKTsKIAogTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA1OTUyY2U4MDljODdkMmMzODA1
YWMyYjk3Y2E2NmMwNjg3ZGVjMzUwLi42NWQyOGMxOGMzMzNiM2MzODJhYWQyMDQ5MWY5OTQyN2Q1
NDYxYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCkBAIC01NSw2ICs1NSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwog
CiBuYW1lc3BhY2UgSlNDIHsKIAorQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoT2JqZWN0
Q29uc3RydWN0b3IpOworCiBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRl
OjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdENvbnN0
cnVjdG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRl
eCBhMWU0OTY2MzQ2NmQzNDBlNWNmMjExNjkxZjA4NTI0YWU1NDIyYzkxLi4zZjRkYzE5ZGIyYTIy
YWU5Mzg1NjU0NGQxNDdjODQ2Njc1ODliMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcoRXhlY1N0YXRlKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxf
REVTVFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOworCiBjb25zdCBDbGFzc0luZm8gT2JqZWN0UHJv
dG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAw
LCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9i
amVjdFByb3RvdHlwZSkgfTsKIAogLyogU291cmNlIGZvciBPYmplY3RQcm90b3R5cGUubHV0LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA5N2RhZTNl
MDhiZjYyYzI5NGI5YjY4NjZjZmNiNzdhMzVjYzg0ZGY0Li5jYTIxNzRmYTFlNzIwNzg5MzNjMzUz
YjE0NzVmOGFlMDk5NjYwYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAo
KGxlbmd0aDEgKyBsZW5ndGgyKSA8IGxlbmd0aDEpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogCi0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoJmdsb2Jh
bERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoZ2xvYmFsRGF0YSwgczEsIHMyKSk7CisgICAgICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlKGdsb2JhbERhdGEsIHMxLCBzMik7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyLCBjb25zdCBVU3RyaW5nJiB1MykKQEAgLTY5LDcg
KzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICgobGVuZ3RoMSArIGxlbmd0aDIg
KyBsZW5ndGgzKSA8IGxlbmd0aDMpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOwogCi0gICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNT
dHJpbmc6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUx
KSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgdTIpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCB1MykpKTsK
KyAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0
cmluZyhnbG9iYWxEYXRhLCB1MSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHUyKSwganNTdHJpbmco
Z2xvYmFsRGF0YSwgdTMpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3RyaW5ncywgdW5zaWduZWQgY291bnQp
CkBAIC0yMzAsOCArMjMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICh2MS5pc051
bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIo
KSA8IHYyLmFzTnVtYmVyKCk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBpZiAoaXNKU1N0cmluZyhnbG9iYWxE
YXRhLCB2MSkgJiYgaXNKU1N0cmluZyhnbG9iYWxEYXRhLCB2MikpCisgICAgICAgIGlmIChpc0pT
U3RyaW5nKHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkKICAgICAgICAgICAgIHJldHVybiBhc1N0cmlu
Zyh2MSktPnZhbHVlKGNhbGxGcmFtZSkgPCBhc1N0cmluZyh2MiktPnZhbHVlKGNhbGxGcmFtZSk7
CiAKICAgICAgICAgZG91YmxlIG4xOwpAQCAtMjY1LDggKzI2NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICAg
ICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPD0gdjIuYXNOdW1iZXIoKTsKIAotICAgICAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7Ci0gICAgICAg
IGlmIChpc0pTU3RyaW5nKGdsb2JhbERhdGEsIHYxKSAmJiBpc0pTU3RyaW5nKGdsb2JhbERhdGEs
IHYyKSkKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYmIGlzSlNTdHJpbmcodjIpKQogICAg
ICAgICAgICAgcmV0dXJuICEoYXNTdHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNTdHJp
bmcodjEpLT52YWx1ZShjYWxsRnJhbWUpKTsKIAogICAgICAgICBkb3VibGUgbjE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNWRmMzJiMTUzNjNhN2QyYjIw
ZmI4ZWU0Nzk2YTFhNWZiMDBkMGU3Li41OTRiMjI1OTIwZDk0ODRhNDE5NThjY2ZhZWYzYjFhODUw
YmQ5YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTI0
OCwxMSArMjQ4LDEzIEBAIHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCiAgICAgICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnM7CiB9CiAKLVJlZ0V4cDo6flJlZ0V4cCgpCit2b2lkIFJlZ0V4cDo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCiB7CisgICAgUmVnRXhwKiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cCo+
KGNlbGwpOwogI2lmIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KICAgICBSZWdFeHBGdW5jdGlv
bmFsVGVzdENvbGxlY3Rvcjo6Z2V0KCktPmNsZWFyUmVnRXhwKHRoaXMpOwogI2VuZGlmCisgICAg
dGhpc09iamVjdC0+UmVnRXhwOjp+UmVnRXhwKCk7CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVh
dGVXaXRob3V0Q2FjaGluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAppbmRleCBhYTNhNjFmNDZmOWMxYTM0ZjczMTE2YThhZjQxZmNlNGMwNDY0
MDZlLi42NWViNDg0OTk5MmNhNWU2ZTE4OWZlMjU0MmFkYzhhNzVmYjlkZGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAogICAgICAgICBzdGF0aWMgUmVn
RXhwKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhw
RmxhZ3MpOwotICAgICAgICB+UmVnRXhwKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKICAgICAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdz
ICYgRmxhZ0dsb2JhbDsgfQogICAgICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCAwM2QyZmQyYzBlZWFhMDQ1
ODFjNThkNmU5MTYxZjRhMGZlOWIxZjg5Li5hMjg3Mzc3YTIyZTkyZWU2ZDBhZTE1ZDI5MjRiNzU4
ZDcyZGUzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwCkBAIC0xMTUsNiArMTE1LDExIEBAIHZvaWQgUmVnRXhwQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiBy
ZWdFeHBQCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCit2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxs
KS0+UmVnRXhwQ29uc3RydWN0b3I6On5SZWdFeHBDb25zdHJ1Y3RvcigpOworfQorCiBSZWdFeHBN
YXRjaGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgOiBK
U0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSkKIHsKQEAgLTE0MCw2ICsxNDUsMTEgQEAgUmVn
RXhwTWF0Y2hlc0FycmF5Ojp+UmVnRXhwTWF0Y2hlc0FycmF5KCkKICAgICBkZWxldGUgc3RhdGlj
X2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKj4oc3ViY2xhc3NEYXRhKCkpOwogfQogCit2
b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganND
YXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpLT5SZWdFeHBNYXRjaGVzQXJyYXk6On5SZWdF
eHBNYXRjaGVzQXJyYXkoKTsKK30KKwogdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmZpbGxBcnJh
eUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBSZWdFeHBDb25zdHJ1Y3RvclByaXZh
dGUqIGQgPSBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqPihzdWJjbGFzc0Rh
dGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuaAppbmRleCA1ZjkzMGViODk1N2QxNWFmYzViMDNiMzgzMTYwZGRiNTA5YTRjYmUzLi43
ZmI4OGQyYjQ0NmEyYTRmMTZlM2Y1YTdhNjg4NWM1ZjVkZDhhZDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKQEAgLTk4LDYgKzk4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdFeHBDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKaW5kZXggMWNjODk4ZTI1
NmQ1MTZhMDQ1ODYyYmMwMTUxM2JlNjdmYThlYTg1OS4uMWMxMTdiMGQ4NWI1YzY5NjRmMGZiM2Nl
MjM5M2VmNWZiZjBkZTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZWdFeHAtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
Y3RvclByaXZhdGUpOwogICAgICAgICAgICAgcmV0dXJuIHJlZ0V4cDsKICAgICAgICAgfQotICAg
ICAgICB2aXJ0dWFsIH5SZWdFeHBNYXRjaGVzQXJyYXkoKTsKKyAgICAgICAgflJlZ0V4cE1hdGNo
ZXNBcnJheSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAg
ICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5k
ZXggNzIxM2RjMjdjMTU1NzdjYjI4NWJiNDI4MDg3MDM4Mzg2YmVmYzg0My4uNDU1M2Y3YWQwZDUy
Y2U4ZjJlZGFhMjI5N2EzMDU3ZTJhMjY2N2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03NSw4ICs3NSw5IEBAIHZvaWQgUmVnRXhw
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLVJlZ0V4cE9iamVjdDo6flJlZ0V4cE9i
amVjdCgpCit2b2lkIFJlZ0V4cE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CisgICAg
anNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLT5SZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3Qo
KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgKaW5kZXggYTExN2YzNjJjM2UzM2E4NzkxMzJhNmNhMjJiMWJlZjg1ZGFjN2Y1
OS4uZWU5OGI2NjAyM2Y4MzBmOWI2NGVkZjFkNjgzMjVlZjJlNDUzMmQwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTQ0LDggKzQ0LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0KCk7Ci0KICAgICAgICAgdm9pZCBzZXRSZWdF
eHAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHIpIHsgZC0+cmVnRXhwLnNldChn
bG9iYWxEYXRhLCB0aGlzLCByKTsgfQogICAgICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsg
cmV0dXJuIGQtPnJlZ0V4cC5nZXQoKTsgfQogCkBAIC03OSw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVnRXhwKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKwog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNW
aXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmNwcAppbmRleCA3OWYyYTdhNDg0YTUzMDExNTNmODUzN2UzYThkMWVhNTM5OTVmYjcyLi4wOTlm
N2ZkZTY4YmJiYzc2Yjc3ZjQyOTZmNmU4NzZhMWY3MWY4YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcApAQCAtMjksOSArMjksNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotU2NvcGVDaGFpbk5vZGU6On5TY29wZUNoYWluTm9kZSgpCi17Ci19CitB
U1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihTY29wZUNoYWluTm9kZSk7CiAKICNpZm5kZWYg
TkRFQlVHCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRl
eCA0ODM4NWQwY2JlMWE0ODhhZTc5Y2FhNmFhMzE1ODFkNzQ2MDBjNjhmLi5mZGU2OTBlYjRkOGRk
MWJmMTljNTdhMjdiYzM4MTViNWRhNDA3YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5TY29wZUNoYWluTm9kZSgpOwot
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uY3BwCmluZGV4IDIxMjgzZGJkMjI0MjVhMjA3ODBiMzNhMWEzMWU3N2IyODNiMjZmYWQu
LmZiZDlkNWZiZDk3Y2MwM2JiNGQ3NmViMjBjZGE0OWI4Y2QyNTdlZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAK
QEAgLTI4LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNfVFJJVklB
TF9ERVNUUlVDVE9SKFN0cmljdEV2YWxBY3RpdmF0aW9uKTsKKwogY29uc3QgQ2xhc3NJbmZvIFN0
cmljdEV2YWxBY3RpdmF0aW9uOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmljdEV2YWxBY3RpdmF0aW9uKSB9OwogCiBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDk2NTcwYjJjMDVhZDkxYTllYmNjZTU5OTE3NWJmODhiM2U0ZWFhMWMuLmQyZjc1
YTA2MGI1NWM0ZjcxYzY5YWZiNmY1MjU4ZmUyOTA4NTgyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ2LDYgKzQ2
LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICovCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoU3RyaW5nQ29uc3RydWN0b3IpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
U3RyaW5nQ29uc3RydWN0b3IpOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggM2VlZDI2NzIz
MTM0MTRiMTNkYWZiNGZkOTYyOTJhNzIzZThkNmY4ZC4uNGEyNDY5OGZiMTY5ZTRhNjU5NTA4YTI4
YWEzZTc5YmMxY2NmNWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFM
X0RFU1RSVUNUT1IoU3RyaW5nT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIFN0cmluZ09iamVj
dDo6c19pbmZvID0geyAiU3RyaW5nIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFN0cmluZ09iamVjdCkgfTsKIApAQCAtMzQsMTAgKzM1LDYgQEAg
U3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBTdHJpbmdPYmplY3Q6OnZ0YWJsZUFuY2hv
cigpCi17Ci19Ci0KIHZvaWQgU3RyaW5nT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTU3RyaW5nKiBzdHJpbmcpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCmluZGV4IGQ2NWVjYzU0MzJiYTE5NWQ5YTZlNDM4N2UyYmYwODFlNWQyNDA0ODku
LjgwNmQwN2IzZDkyOGViMTA1NzYxOWEzODJhZmJjOWVjNzFkMGFiNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0zMCw4ICszMCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1dyYXBwZXJPYmpl
Y3QgQmFzZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdnRhYmxlQW5jaG9yKCk7Ci0KICAgICAg
ICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBq
c0VtcHR5U3RyaW5nKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggM2RlODk1MzQyMjY3ZmQ3OWFkY2I0MWFhMjE1Njc1
NmM0ZWZhZDYzMi4uOWJmMThkZTY5YWU2YTYxZGJkMTZhOWUzZGE1ZjRmMDM4YjVkZDlhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CkBAIC00NSw2ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiBuYW1lc3BhY2UgSlNDIHsK
IAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdQcm90b3R5cGUpOworQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoU3RyaW5nUHJvdG90eXBlKTsKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFy
QXQoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCA2YjRjYTJiZmZiNGM5NjE5NjYwMzEwYzJhYWFjMTA5MWRiMjc2Nzc3Li5kZGE4
YzczZTkyZGY2ZDEzNDgwMDk0ZDI2YTUyODNjMTE5N2UzMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTIxOCw4ICsyMTgsOSBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cnVjdHVyZSog
cHJldmlvdXMpCiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldChnbG9iYWxEYXRhLCB0aGlzLCBw
cmV2aW91cy0+bV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCi1TdHJ1Y3R1cmU6On5TdHJ1Y3R1
cmUoKQordm9pZCBTdHJ1Y3R1cmU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2Fz
dDxTdHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKIHZvaWQg
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZTM3MmIy
MDI2NWZlYzA0MmM0ODBlMDllMzg3YTZhZjkyMzliOGM0Yy4uOTJlMWIzYjMzMDk4NzIyYTZjMDgx
ZmE5YzhmYmNjNWNmOTgyZDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBT
dHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2Jq
ZWN0Kik7CiAKLSAgICAgICAgflN0cnVjdHVyZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1
dGlvbi4gIAogICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CkBAIC0zMzUsMTYgKzMzNSwxOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OnNldFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkgPT0g
dGhpcy0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9zdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpKTsKICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0
cnVjdHVyZSk7CiAgICAgfQogCi0gICAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpj
bGFzc0luZm8oKSBjb25zdAorICAgIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6dmFs
aWRhdGVkQ2xhc3NJbmZvKCkgY29uc3QKICAgICB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04p
Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8o
KTsKKyAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5m
bygpID09IG1fY2xhc3NJbmZvKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+
Y2xhc3NJbmZvKCk7CisgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0g
bV9jbGFzc0luZm8pOwogI2VuZGlmCisgICAgICAgIHJldHVybiBtX2NsYXNzSW5mbzsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU0Nl
bGwqIGNlbGwpCkBAIC0zODAsNiArMzgyLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogbV9jbGFz
c0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShnbG9i
YWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSB2b2lk
IEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCisgICAgeworI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQorICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09i
amVjdCgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OworICAgICAgICBpZiAoc3RydWN0dXJlKQorI2VuZGlmCisgICAgICAgICAgICBtX3N0cnVjdHVy
ZS5zZXRFYXJseVZhbHVlKGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZSk7CisgICAgICAgIG1f
Y2xhc3NJbmZvID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKKyAgICAgICAgLy8gVmVyeSBmaXJz
dCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2ZSBhIHJlYWwgc3RydWN0dXJlLgorICAgICAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsK
KyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRl
eCAzYTA4NTY5NzBjYjQ0YmVhZDAxYjA0Y2RiNzkyODVjNjUyYWExMDZmLi5hZmIyZDk1MDE4ODY3
ZjlkYjdmNDQxZjI4Yzg5M2IxMGUyYTYwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zOSw4ICszOSw5IEBAIFN0cnVjdHVy
ZUNoYWluOjpTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogfQogCi1TdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWluKCkK
K3ZvaWQgU3RydWN0dXJlQ2hhaW46OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2Fz
dDxTdHJ1Y3R1cmVDaGFpbio+KGNlbGwpLT5TdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWlu
KCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDI4MWY2MDI0ZTRlNmQ0Yzc5YmIzNTljMGQxN2FjYzUz
MTQwYTQ0MTAuLjAxYTU5YmYxOTcyMTExZDFkMzNmZGJhMTEwNDQxN2IwODQ0MTUyOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNzUs
NyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cnVj
dHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICB+U3RydWN0dXJl
Q2hhaW4oKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCmluZGV4IGQ0ZjVkODA5ODVkYjdh
OTE1NjQyOTg4M2YwNTNmMjFhMzdiMzIyMTEuLjJiM2Q3OTRhNGQ3ZTAyMjdjZWUwODYwNWU3ZmQ4
NjBkN2I0NDk1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCkBAIC0z
ODMsNCArMzgzLDEwIEBAIHdoaWxlICgwKQogI2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKG9iamVjdCwgY2xhc3NJbmZvKSBkbyB7ICh2b2lkKW9iamVjdDsgKHZvaWQpY2xhc3NJbmZv
OyB9IHdoaWxlICgwKQogI2VuZGlmCiAKKyNpZiBDT01QSUxFUihDTEFORykKKyNkZWZpbmUgQVNT
RVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Ioa2xhc3MpIENPTVBJTEVfQVNTRVJUKF9faGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcihrbGFzcyksIGtsYXNzIyNfaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcl9j
aGVjaykKKyNlbHNlCisjZGVmaW5lIEFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKGtsYXNz
KQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfQXNzZXJ0aW9uc19oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXggOGVhNWQyOTUzMGZkNjgxYzBkZjYyMmY2MDQy
NDdiMjVkNTJlNDM1Yi4uNjgwMGZkZjQ0YWZmMTI3Y2UwMGU2MWI1MjQyODQ0YjkzMDE1YzdjMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAtNDYsNiArNDYsMTEg
QEAgVXNlck9iamVjdEltcDo6flVzZXJPYmplY3RJbXAoKQogICAgICAgICBmSlNVc2VyT2JqZWN0
LT5SZWxlYXNlKCk7CiB9CiAKK3ZvaWQgVXNlck9iamVjdEltcDo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit7CisgICAganNDYXN0PFVzZXJPYmplY3RJbXAqPihjZWxsKS0+VXNlck9iamVjdEltcDo6
flVzZXJPYmplY3RJbXAoKTsKK30KKwogQ2FsbFR5cGUgVXNlck9iamVjdEltcDo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgVXNlck9iamVjdElt
cCogdGhpc09iamVjdCA9IGpzQ2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCBkNjQ4YTk1YmI1MjE4YzlmMDk0OTc4Yjg2NWMy
ZjhjMWQzZDc1N2VkLi40OWE2NTNlMGMxMzMzM2U1YjNiOTgzYjg1ZTZjMGM4OWYzYjQ5YTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5V
c2VyT2JqZWN0SW1wKCk7CisgICAgflVzZXJPYmplY3RJbXAoKTsKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAK
QEAgLTUzLDEyICs1NCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGNhbGxBc0Z1bmN0aW9uKEV4ZWNT
dGF0ZSAqZXhlYyk7CisgICAgSlNWYWx1ZSBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqKTsgLy8g
VE9ETzogRmlndXJlIG91dCBob3cgdG8gcmUtdmlydHVhbGl6ZSB0aGlzIHdpdGhvdXQgYnJlYWtp
bmcgdGhlIGZhY3QgdGhhdCB3ZSBkb24ndCBhbGxvdyB2cHRycyBpbiB0aGUgSlNDZWxsIGhpZXJh
cmNoeS4KICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTVmFsdWUgdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXBlID0gTm9QcmVm
ZXJlbmNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSAqZXhl
YykgY29uc3Q7CisgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7IC8vIFRPRE86
IEZpZ3VyZSBvdXQgaG93IHRvIHJlLXZpcnR1YWxpemUgdGhpcyB3aXRob3V0IGJyZWFraW5nIHRo
ZSBmYWN0IHRoYXQgd2UgZG9uJ3QgYWxsb3cgdnB0cnMgaW4gdGhlIEpTQ2VsbCBoaWVyYXJjaHku
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjg0YzNkMmYwMGVhMWNkYTIzYzI3YTBjNmY3MjVi
ZmQ3NTEzMWVhMy4uZTE3NzJiYTkzYjQ2ZWNhMzU2ZDgxY2Y1ZjhiOTZhNDFkNWUxZjFmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTI2NCw3ICsyNjQsNyBAQCBfX1pON1dlYkNvcmUxMkljb25E
YXRhYmFzZTI3Y2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nRXYKIF9fWk43V2ViQ29yZTEySWNv
bkRhdGFiYXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlOXNldENsaWVudEVQ
TlNfMThJY29uRGF0YWJhc2VDbGllbnRFCiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZUMxRXYK
LV9fWk43V2ViQ29yZTEySlNET01XcmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFr
VnRhYmxlRXYKK19fWk43V2ViQ29yZTEySlNET01XcmFwcGVyNnNfaW5mb0UKIF9fWk43V2ViQ29y
ZTEyUG9wdXBNZW51TWFjQzFFUE5TXzE1UG9wdXBNZW51Q2xpZW50RQogX19aTjdXZWJDb3JlMTJQ
cmludENvbnRleHQxMnBhZ2VQcm9wZXJ0eUVQTlNfNUZyYW1lRVBLY2kKIF9fWk43V2ViQ29yZTEy
UHJpbnRDb250ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJhbWVFUktOU185RmxvYXRTaXplRQpA
QCAtMTI3Niw2ICsxMjc2LDcgQEAgX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3dG9O
b3JtYWxpemVkUmFuZ2VFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE5cm9vdEVk
aXRhYmxlRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMjNpc0NvbnRl
bnRSaWNobHlFZGl0YWJsZUV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uNWlzQWxs
RU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQorX19aTks3V2ViQ29yZTE3SlNET01H
bG9iYWxPYmplY3QyMnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29yZTE3UmVn
dWxhckV4cHJlc3Npb24xM21hdGNoZWRMZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4
cHJlc3Npb241bWF0Y2hFUktOM1dURjZTdHJpbmdFaVBpCiBfX1pOSzdXZWJDb3JlMTdSZWd1bGFy
RXhwcmVzc2lvbjlzZWFyY2hSZXZFUktOM1dURjZTdHJpbmdFCkBAIC0xNDQwLDcgKzE0NDEsNiBA
QCBfX1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTEwZnJhbWVDb3VudEV2CiBfX1pOSzdXZWJDb3JlOVBh
Z2VDYWNoZTIxYXV0b3JlbGVhc2VkUGFnZUNvdW50RXYKIF9fWk5LN1dlYkNvcmU5VHJlZVNjb3Bl
MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pUVk43V2ViQ29yZTEy
Q2hyb21lQ2xpZW50RQotX19aVFZON1dlYkNvcmUxMkpTRE9NV3JhcHBlckUKIF9fWlRWTjdXZWJD
b3JlMTZJY29uRGF0YWJhc2VCYXNlRQogX19aVFZON1dlYkNvcmUxN0ZyYW1lTG9hZGVyQ2xpZW50
RQogX19aVFZON1dlYkNvcmUxOFBsYXRmb3JtU3RyYXRlZ2llc0UKQEAgLTE3MjMsMTEgKzE3MjMs
MTEgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjZzZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudEVpCiAK
ICNpZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VTUykKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFn
ZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQotX19aTjNKU0MxM1J1bnRpbWVN
ZXRob2QxMnZ0YWJsZUFuY2hvckV2CiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNoQ3Jl
YXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxM1J1
bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGlt
ZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVj
U3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNK
U0MxM1J1bnRpbWVNZXRob2Q2c19pbmZvRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJv
eUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxP
YmplY3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RGNlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVM
bTBFRUUKIF9fWk4zSlNDOEJpbmRpbmdzMTBSb290T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFF
CkBAIC0xNzQwLDE0ICsxNzQwLDEzIEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhCiBfX1pOM0pT
QzhCaW5kaW5nczEzUnVudGltZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184
SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlE
ZXNjcmlwdG9yRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QzcHV0RVBOU182SlND
ZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1
dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0NnNfaW5mb0UK
K19fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0N2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBf
X1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdEMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpT
R2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF84SW5zdGFu
Y2VFRUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0RDJFdgogX19aTjNKU0M4Qmlu
ZGluZ3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzhCaW5kaW5nczhJbnN0YW5jZUMyRU4zV1RGMTBQYXNzUmVmUHRySU5TMF8xMFJvb3RPYmpl
Y3RFRUUKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlRDJFdgogX19aTjdXZWJDb3JlMTNJZGVu
dGlmaWVyUmVwN2lzVmFsaWRFUFMwXwogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTZj
cmVhdGVSb290T2JqZWN0RVB2Ci1fX1pUVk4zSlNDMTNSdW50aW1lTWV0aG9kRQogI2VuZGlmCiAK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwCmluZGV4IDE3OGIxMzAzNjQ0NzBlMDM4Y2UwZTI5YWI4NmEyNzkwMGMxMmY4
NGMuLjEyNzUwMjkyM2QxNzk3M2IzNTcyYjA5Y2ZjYzFjOTI5MmIyNWZkYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBKU1ZhbHVlIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRMaW5lRGFzaChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzSlNBcnJheSgmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSkpCisgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBEYXNoQXJyYXkgZGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDU5YmQ5ZjI5ZTE0MTc1ZjVlYjIwZTdkZWJh
YzgxMjUzZWIxMTkxNzYuLjJmNDk5OTRjZWZjNmQ3NDA5YjQ0ZGU5ZTQ0MjczODQyNGI4OGQxMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMzgs
NiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKERPTUNvbnN0cnVjdG9yT2JqZWN0KTsKK0FT
U0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KTsK
KwogY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU0M6Okhhc2hUYWJsZSogc3RhdGljVGFibGUpCiB7
CiAgICAgcmV0dXJuIERPTU9iamVjdEhhc2hUYWJsZU1hcDo6bWFwRm9yKGdsb2JhbERhdGEpLmdl
dChzdGF0aWNUYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKaW5kZXggOGM1NzRkOTg0OWQzNjQyMTk0ZjAwYjdiODNjYzExYTliZjRl
ZmIxNS4uMzFmZmI1NGQ0NWZiZGE0YTE2N2VhYjU0MTgzMTkxZmE2ODFiODg1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDks
OCArNDksOSBAQCBKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdAogewogfQogCi1KU0RPTUdsb2JhbE9i
amVjdDo6fkpTRE9NR2xvYmFsT2JqZWN0KCkKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNlbGwp
LT5KU0RPTUdsb2JhbE9iamVjdDo6fkpTRE9NR2xvYmFsT2JqZWN0KCk7CiB9CiAKIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
QEAgLTY1LDYgKzY2LDE4IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxUaGlzKiB0CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKIH0KIAorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01HbG9i
YWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIGlmIChpbmhl
cml0cygmSlNET01XaW5kb3dCYXNlOjpzX2luZm8pKQorICAgICAgICByZXR1cm4ganNDYXN0PGNv
bnN0IEpTRE9NV2luZG93QmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cisj
aWYgRU5BQkxFKFdPUktFUlMpCisgICAgaWYgKGluaGVyaXRzKCZKU1dvcmtlckNvbnRleHRCYXNl
OjpzX2luZm8pKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2VyQ29udGV4dEJh
c2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworI2VuZGlmCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSlNET01HbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmgKaW5kZXggODc1NWZmYjg4MWNmYjg0YWJlYTc0NmZkZDg3YzA4ZTkxMWFlYTE3ZC4u
YWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RydWN0IEpTRE9NR2xvYmFsT2JqZWN0RGF0
YTsKIAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6
U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBjb25zdCBKU0M6Okdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKiA9IDApOwotICAgICAgICB2aXJ0dWFsIH5KU0RPTUdsb2JhbE9i
amVjdCgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNHbG9iYWxUaGlzKik7
CiAKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0RPTVN0
cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIHsgcmV0dXJuIG1fc3RydWN0dXJlczsgfQogICAgICAg
ICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSB7IHJldHVybiBtX2NvbnN0cnVj
dG9yczsgfQogCi0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAgIC8vIE1ha2Ug
YmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgICAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gdGhpczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZTY4YmNhMWQ2MzJlNGM5NWMxMDhk
NDI2YjRjZjVlMWU5MWVhNTVlYS4uOGRlNDMyZWRmNjE3MDc3ZTdjMGI4OTI5NGZlZTE4ZTM0NzVj
MzY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCkBAIC02NSw2ICs2NSwxMSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvd1NoZWxsKgogICAgIGFkZFN0
YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxz
KSk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sK
KyAgICBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oY2VsbCktPkpTRE9NV2luZG93QmFzZTo6fkpT
RE9NV2luZG93QmFzZSgpOworfQorCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1l
bnQoKQogewogICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5MWYzZjdhNGQ0YzZjNmNlNjlj
NzUzYmI5YzVjMTAwZTE0MWM5ZGFhLi44NGMxODYyNGEyYzgwMmYzMjI1NzVlMjJiOWRlMThhNWM1
OGVkN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aApAQCAtNDAsMTEgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNET01X
aW5kb3dCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTRE9NV2luZG93U2hlbGwqKTsKIAorICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgcHVibGljOgogICAgICAgICB2b2lk
IHVwZGF0ZURvY3VtZW50KCk7CiAKICAgICAgICAgRE9NV2luZG93KiBpbXBsKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAg
Ly8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2luZG93IGZyb20gdGhlIEpTRE9N
V2luZG93U2hlbGwuCiAgICAgICAgIHZvaWQgd2lsbFJlbW92ZUZyb21XaW5kb3dTaGVsbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRl
eCAyNWQzODRhYjBkNTQ2MDJkNjQ5M2I4YmFlZTIwOTIzZmMyNDc5Y2NlLi5kOTZmODQwZGI2NDBh
MjlkZjcxYjMxOTE3OTg1OTRkYjQzYWM1ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTcsOCArNTcsOSBAQCB2b2lkIEpTRE9N
V2luZG93U2hlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFz
c1JlZlB0cjxET01XaQogICAgIHNldFdpbmRvdyh3aW5kb3cpOwogfQogCi1KU0RPTVdpbmRvd1No
ZWxsOjp+SlNET01XaW5kb3dTaGVsbCgpCit2b2lkIEpTRE9NV2luZG93U2hlbGw6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCktPkpT
RE9NV2luZG93U2hlbGw6On5KU0RPTVdpbmRvd1NoZWxsKCk7CiB9CiAKIHZvaWQgSlNET01XaW5k
b3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggNDNiOTZl
MjQyNWY0MmYyZjA0OGE0OGNmMjAwYTgzMWY5Zjg3ZDlhYy4uZDg2NzY2ZDE3YjJjZmZkN2M2YTFj
YjIyZGI3NDcyMDNhOWUzNmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHR5cGVkZWYgSlNDOjpKU0dsb2JhbFRoaXMgQmFzZTsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBKU0M6OlN0cnVjdHVy
ZSosIERPTVdyYXBwZXJXb3JsZCopOwotICAgICAgICB2aXJ0dWFsIH5KU0RPTVdpbmRvd1NoZWxs
KCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgSlNE
T01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2luZG93
Kj4obV91bndyYXBwZWRPYmplY3QuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgc2V0V2luZG93KEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvdyogd2luZG93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKaW5kZXggZDU0ZmU3NGZhNjdj
ZmZmYzZlODg3NTQ0OGM0NGQ2ZTk1NTdhYTZhNC4uMDVkYTQwMjQwNWQzNjRiYmNmOTQ4MjI4NzRh
Y2U2MDU0YWEzMjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuY3BwCkBAIC0zMiw5ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBKU0RPTVdyYXBwZXI6OnZpcnR1YWxGdW5jdGlvblRvUHJldmVu
dFdlYWtWdGFibGUoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQorQVNTRVJUX0hB
U19UUklWSUFMX0RFU1RSVUNUT1IoSlNET01XcmFwcGVyKTsKKworY29uc3QgQ2xhc3NJbmZvIEpT
RE9NV3JhcHBlcjo6c19pbmZvID0geyAiSlNET01XcmFwcGVyIiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdyYXBwZXIpIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3Jh
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXgg
MzY4NWM4OWU2ODQ4OGYzZTFkODljZWFhMzQ4YzliMWViNDk4ODRlNC4uYWNkNzk2YTNmYjQ0Yzk3
MGM4MzY0ZGVhNzI4OWE4NjI2NTJlNWVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKQEAgLTQyLDE2ICs0MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIH0KIAorICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIC8v
IEFuIGlubGluZSBmdW5jdGlvbiBjYW5ub3QgYmUgdGhlIGZpcnN0IG5vbi1hYnN0cmFjdCB2aXJ0
dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCi0gICAgLy8gaW4gdGhlIGNsYXNzIGFzIGl0IHJlc3VsdHMg
aW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJvbC4KLSAgICB2aXJ0
dWFsIHZvaWQgdmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZSgpOwotCiAgICAgZXhw
bGljaXQgSlNET01XcmFwcGVyKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgCiAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IDRhMzk2ZTQ1
Y2Y3MWMzYzJlNzM3MjU2MmYzNzMxNjE5MDEwNTNkMGMuLjk1NmM5NjE1YTAxZTkzNjg2YmZlYTkx
NTA1MWY2NWJjNjVhNGMwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpT
SW1hZ2VDb25zdHJ1Y3Rvcik7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0ltYWdl
Q29uc3RydWN0b3IpOwogCi1jb25zdCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50Ojpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbWFnZUNvbnN0cnVjdG9yKSB9Owor
Y29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiSW1hZ2VDb25z
dHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbWFn
ZUNvbnN0cnVjdG9yKSB9OwogCiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rv
cihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggNWFm
N2UzN2IyN2Y5N2M0YzMzOGUwNDMyNGI2NjExN2ZhMTdhMzk5Mi4uNjFjMTVkNmI5NGY4MjhlMWRi
YjE1ZGZhMjZjYWI5OTUyOGU5OTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwCkBAIC0xODgsOCArMTg4LDEwIEBAIEpTVmFsdWUgSlNOb2RlOjphcHBl
bmRDaGlsZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCi1TY29w
ZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqIG5vZGUpIGNvbnN0CitTY29wZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZl
bnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbm9kZSkgY29u
c3QKIHsKKyAgICBpZiAoaW5oZXJpdHMoJkpTSFRNTEVsZW1lbnQ6OnNfaW5mbykpCisgICAgICAg
IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNIVE1MRWxlbWVudCo+KHRoaXMpLT5wdXNoRXZlbnRIYW5k
bGVyU2NvcGUoZXhlYywgbm9kZSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCA0OWE4Mjhj
Yzg4NTVhZDVkMzM5ZTRhMzdjMDg2NTUwOWYxNDkzMzc2Li43NzdlNWI4MWUzNzE3YzFjMWYxN2Jj
ZjViMDMyM2JjMzNkMDI3YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQo
RXhlY1N0CiAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIGVjKTsKICAgICBl
bHNlIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b2NvbHNWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEp
OwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvY29sc1Zh
bHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KHByb3RvY29sc1ZhbHVlKSkgewogICAgICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwogICAgICAgICAgICAgSlNBcnJheSogcHJv
dG9jb2xzQXJyYXkgPSBhc0FycmF5KHByb3RvY29sc1ZhbHVlKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbHNBcnJheS0+bGVuZ3RoKCk7ICsraSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcApp
bmRleCA5MmI3OWY0MzU3OGU1OTYyYTg3M2I3NjdjYzU3ZGEyMTM2ZjY4MDdhLi5lNzljNmU0YmQ0
MzIxZTVjMDc3ZjA4NzhlZmY0NTI4YWZkYTU5NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcApAQCAtNjAsOCArNjAsOSBAQCB2
b2lkIEpTV29ya2VyQ29udGV4dEJhc2U6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1KU1dvcmtlckNv
bnRleHRCYXNlOjp+SlNXb3JrZXJDb250ZXh0QmFzZSgpCit2b2lkIEpTV29ya2VyQ29udGV4dEJh
c2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxKU1dvcmtlckNvbnRleHRC
YXNlKj4oY2VsbCktPkpTV29ya2VyQ29udGV4dEJhc2U6On5KU1dvcmtlckNvbnRleHRCYXNlKCk7
CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2VyQ29udGV4dEJhc2U6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCmluZGV4IGQ4MTcxYzE1N2VlZGJlOTllZjcyOTcwNTI2
ZThjNzQyNWRjNWVmZDUuLmFiY2JlYjY1ODMyNDQ5MDUxYTM5ODVlYWFjNmMxY2Y0YTQyODU3NTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmgKQEAgLTQxLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSlNX
b3JrZXJDb250ZXh0QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiAgICAgICAgIHR5
cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1
YWwgfkpTV29ya2VyQ29udGV4dEJhc2UoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87CiAKICAgICAgICAgV29ya2VyQ29udGV4dCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bC5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNw
cAppbmRleCBjYjg2YjI5YjU4YjA0ZTA5ZjE2NGI0ZmFhNDZhMjA1NjMwMGZiMTlmLi5iZmE5M2Fh
ODcwN2IwOWE5ZTNiNGI2MzEzN2EyYmQzZThlNjMyZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIEoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmlu
ZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KICAgICBpZiAodmFsdWUuaXNP
YmplY3QoKSkgewotICAgICAgICBpZiAoaXNKU0FycmF5KCZzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0
YSgpLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUp
OwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggYjY3NWNhMzEzMmRjMTQ5MDRjODBiZWJiYTEyMDlkYmQ1NzM4NDYxMy4uYTU2YThkYzlm
YThmOWM0OTFhMGM1NzkzODU3YWZjYWU3OGM5MDZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zMTAsNyArMzEw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFs
dWUpOwotICAgICAgICByZXR1cm4gaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgb2Jq
ZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pOworICAgICAgICByZXR1
cm4gaXNKU0FycmF5KG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZv
KTsKICAgICB9CiAKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVj
dCkKQEAgLTM1Nyw3ICszNTcsNyBAQCBwcml2YXRlOgogICAgIEpTVmFsdWUgZ2V0U3BhcnNlSW5k
ZXgoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgYm9vbCYgaGFzSW5kZXgp
CiAgICAgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhcnJheSk7Ci0gICAgICAgIGlmIChp
c0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkpIHsKKyAgICAgICAgaWYgKGlz
SlNBcnJheShhcnJheSkpIHsKICAgICAgICAgICAgIGlmIChKU0FycmF5OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KGFycmF5LCBtX2V4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKICAgICAg
ICAgICAgICAgICBoYXNJbmRleCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNsb3Qu
Z2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2VkMmIxZmQ5ZDU4OTQ2
Y2VhODAzYzM4NzliYjYyODJjYTMxMGQ3Li41ZDRiYjYwNTFhYWNlN2NkYWUzNzdjNTRhYmJjYTQ2
NmY0ODRiNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKIAogICAgICMgQ3VzdG9tIHB1
c2hFdmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNoRXZlbnRIYW5kbGVyU2NvcGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikgY29uc3Q7XG5cbiIpIGlmICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSJ9
OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpTY29wZUNoYWluTm9kZSogcHVz
aEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTY29wZUNoYWluTm9kZSop
IGNvbnN0O1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Q
dXNoRXZlbnRIYW5kbGVyU2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNhbGwgZnVuY3Rpb25zCiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwpAQCAtODYxLDcgKzg2MSw2IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZh
bHNlIGZvciBvYmplY3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9v
bCB0b0Jvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTtcbiIp
OwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCJ9
ID0gMTsKICAgICB9CiAKQEAgLTEzNjksNyArMTM2OCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG51c2luZyBuYW1lc3BhY2UgSlNDO1xu
XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIik7
CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIkFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoJGNs
YXNzTmFtZSk7XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTCgkY2xhc3NOYW1lKTtcbiIpOworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAi
RE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJD
b250ZXh0In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUigkY2xhc3NOYW1lKTtcblxuIik7CisgICAgfQogCiAgICAgbXkgJG51bUF0
dHJpYnV0ZXMgPSBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUoJG9iamVjdCwgJGRhdGFOb2Rl
KTsKIApAQCAtMTUwMSw5ICsxNTAzLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0
YSgpLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBD
bGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xh
c3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIGdl
dCR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xhc3NO
YW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiY29u
c3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlzaWJs
ZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgMCwgZ2V0JHtjbGFzc05hbWV9
UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtjbGFzc05hbWV9UHJvdG90eXBl
KSB9O1xuXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNv
bnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zpc2li
bGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywg
JiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
Y29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlz
aWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgJiR7Y2xhc3NOYW1lfVBy
b3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSkgfTtcblxuIik7CiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAiRE9NV2luZG93
IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0p
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9UHJv
dG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dClcbiIpOwpAQCAtMTUxMSw2ICsxNTEzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTwk
e2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KKwogICAgIGlmICgkbnVtQ29uc3RhbnRzID4gMCB8
fCAkbnVtRnVuY3Rpb25zID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJE
ZWxlZ2F0aW5nUHJvdG90eXBlR2V0T3duUHJvcGVydHlTbG90In0pIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwpAQCAtMTU3MSw3ICsxNTc0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAg
IHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICRjbGFzc05hbWUiIC4gIjo6c19p
bmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1cIiwgJiIgLiAkcGFyZW50Q2xhc3NOYW1lIC4g
Ijo6c19pbmZvLCAiKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5mbyAk
Y2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9XCIsICZCYXNl
OjpzX2luZm8sICIpOwogCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCAmJiAhJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9TdGF0aWNUYWJsZXMifSkgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiYke2NsYXNzTmFtZX1UYWJsZSIpOwpAQCAtMTYyMSw3ICsxNjI0LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsKICAgICAgICAgaWYgKElzVHlwZWRBcnJheVR5cGUoJGlt
cGxUeXBlKSBhbmQgKCRpbXBsVHlwZSBuZSAiQXJyYXlCdWZmZXJWaWV3IikgYW5kICgkaW1wbFR5
cGUgbmUgIkFycmF5QnVmZmVyIikpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFR5cGVkQXJyYXlEZXNjcmlwdG9yIGRlc2NyaXB0b3IodnB0cigpLCBPQkpFQ1RfT0ZGU0VU
T0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBPQkpFQ1RfT0ZGU0VUT0YoJHtjbGFzc05hbWV9
LCBtX3N0b3JhZ2VMZW5ndGgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcigmJHtjbGFzc05hbWV9OjpzX2lu
Zm8sIE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZSksIE9CSkVDVF9PRkZT
RVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZUxlbmd0aCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBnbG9iYWxEYXRhLnJlZ2lzdGVyVHlwZWRBcnJheURlc2Ny
aXB0b3IoaW1wbCgpLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fc3RvcmFnZUxlbmd0aCA9IGltcGwoKS0+bGVuZ3Ro
KCk7XG4iKTsKQEAgLTMzODgsMTMgKzMzOTEsMTUgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uCiAgICAgbXkgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVycyA9ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9OwogCiAgICAg
aWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9
IHsgXCIke3Zpc2libGVDbGFzc05hbWV9Q29uc3RydWN0b3JcIiwgJkRPTUNvbnN0cnVjdG9yT2Jq
ZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NO
YW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJ
bmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NO
YW1lfUNvbnN0cnVjdG9yXCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OiR7Y29uc3RydWN0b3JDbGFzc05hbWV9
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IERPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNvbnN0IENsYXNz
SW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNz
TmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywgJiR7Y29u
c3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVj
dG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiQVNT
RVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0pO1xuXG4i
KTsKKworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9Q29uc3Ry
dWN0b3JcIiwgJkJhc2U6OnNfaW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OiR7Y29u
c3RydWN0b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6
IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKaW5kZXgg
NGIwM2FiOTQ0NTZiNWFiZWZjOGRiYzNjN2UxOWY2ODM2NjRkZjY4Zi4uYWQ2ZDk5ZWEwNGZkMjBl
NGQ4ZjQwYjkyODk3MzRlYWQyZmE5ZWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCkBAIC0zNiw2
ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGbG9hdDY0QXJyYXkpOworQVNTRVJUX0hBU19UUklW
SUFMX0RFU1RSVUNUT1IoSlNGbG9hdDY0QXJyYXkpOwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAg
LTU0LDcgKzU1LDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRmxvYXQ2NEFycmF5
Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUg
SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU0Zsb2F0NjRBcnJh
eUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvciIsICZET01D
b25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxl
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IpIH07CitB
U1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZsb2F0NjRBcnJheUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTRmxvYXQ2NEFycmF5
Q29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yKSB9OwogCiBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpKU0Zsb2F0NjRBcnJh
eUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCkBAIC05OCw3ICsxMDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXRKU0Zs
b2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gZ2V0
SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT5nbG9iYWxEYXRhKCksICZKU0Zsb2F0NjRBcnJh
eVByb3RvdHlwZVRhYmxlKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5UHJv
dG90eXBlOjpzX2luZm8gPSB7ICJGbG9hdDY0QXJyYXlQcm90b3R5cGUiLCAmSlNDOjpKU05vbkZp
bmFsT2JqZWN0OjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNGbG9hdDY0QXJyYXlQcm90b3R5cGUpIH07Citjb25zdCBDbGFz
c0luZm8gSlNGbG9hdDY0QXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZsb2F0NjRBcnJheVBy
b3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFi
bGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGbG9hdDY0QXJyYXlQcm90b3R5cGUpIH07CiAKIEpT
T2JqZWN0KiBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC0xMjIsNyArMTI1LDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSogZ2V0SlNGbG9hdDY0QXJyYXlUYWJsZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgp
LCAmSlNGbG9hdDY0QXJyYXlUYWJsZSk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU0Zsb2F0NjRB
cnJheTo6c19pbmZvID0geyAiRmxvYXQ2NEFycmF5IiwgJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2lu
Zm8sIDAsIGdldEpTRmxvYXQ2NEFycmF5VGFibGUgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmxv
YXQ2NEFycmF5KSB9OworY29uc3QgQ2xhc3NJbmZvIEpTRmxvYXQ2NEFycmF5OjpzX2luZm8gPSB7
ICJGbG9hdDY0QXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXRKU0Zsb2F0NjRBcnJheVRhYmxl
ICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zsb2F0NjRBcnJheSkgfTsKIAogSlNGbG9hdDY0QXJy
YXk6OkpTRmxvYXQ2NEFycmF5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gaW1wbCkKICAgICA6IEpT
QXJyYXlCdWZmZXJWaWV3KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKQpAQCAtMTMyLDcg
KzEzNSw3IEBAIEpTRmxvYXQ2NEFycmF5OjpKU0Zsb2F0NjRBcnJheShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIEpTRmxvYXQ2NEFycmF5Ojpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3Jp
cHRvcih2cHRyKCksIE9CSkVDVF9PRkZTRVRPRihKU0Zsb2F0NjRBcnJheSwgbV9zdG9yYWdlKSwg
T0JKRUNUX09GRlNFVE9GKEpTRmxvYXQ2NEFycmF5LCBtX3N0b3JhZ2VMZW5ndGgpKTsKKyAgICBU
eXBlZEFycmF5RGVzY3JpcHRvciBkZXNjcmlwdG9yKCZKU0Zsb2F0NjRBcnJheTo6c19pbmZvLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNGbG9hdDY0QXJyYXksIG1fc3RvcmFnZSksIE9CSkVDVF9PRkZTRVRP
RihKU0Zsb2F0NjRBcnJheSwgbV9zdG9yYWdlTGVuZ3RoKSk7CiAgICAgZ2xvYmFsRGF0YS5yZWdp
c3RlclR5cGVkQXJyYXlEZXNjcmlwdG9yKGltcGwoKSwgZGVzY3JpcHRvcik7CiAgICAgbV9zdG9y
YWdlID0gaW1wbCgpLT5kYXRhKCk7CiAgICAgbV9zdG9yYWdlTGVuZ3RoID0gaW1wbCgpLT5sZW5n
dGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA0NDAwZTVlMTIy
ZGIzNjRkNjJlYzhjM2IyODM4ZWQ4MmM4NDIzODliLi5mODBiNjQ5NzMxZGEzM2Y1MzZmZjljZTcx
MDFjYjFmZmE1NGIyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBA
IC0zMyw2ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CitB
U1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKIAog
LyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIApAQCAtNTMsNyArNTQsOSBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
VGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9N
Q29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCkBAIC0xMjcsMTQgKzEz
MCwxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
clByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDEsIDAsIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RFdmVudENvbnN0
cnVjdG9yUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmSlNUZXN0
RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0
RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0
b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3Rv
dHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBl
OjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
ICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KGV4ZWMs
IGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZKU0RPTVdyYXBwZXI6OnNf
aW5mbywgJkpTVGVzdEV2ZW50Q29uc3RydWN0b3JUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZCYXNlOjpz
X2luZm8sICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6
OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEV2ZW50Q29uc3RydWN0b3I+IGlt
cGwpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwCmluZGV4IDBhYWE1NmE3NDZiOTk5MDZlZmU4MTM0ZTZmZDc4MjVhNDQzMTBm
YTAuLmJhMjJiOWYyNTQ2ODUxM2JjM2JkYTc4ZGFmY2FhYzJhZjA5Yjc0ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwCkBAIC00Miw2ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0SW50ZXJm
YWNlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdEludGVyZmFjZSk7CiAK
IC8qIEhhc2ggdGFibGUgKi8KIApAQCAtNjksNyArNzAsOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIH07CiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSA9
IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywgJkpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH07CiAKIEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERP
TUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpAQCAtMTMwLDE0ICsx
MzMsMTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
VGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VQcm90b3R5cGUiLCAmSlNDOjpKU05vbkZpbmFs
T2JqZWN0OjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlUHJv
dG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRhYmxlLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSkgfTsKIAogSlNP
YmplY3QqIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2UiLCAmSlNET01X
cmFwcGVyOjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0SW50ZXJmYWNlKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFj
ZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RJbnRl
cmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlKSB9Owog
CiBKU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNl
PiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGExZjZiOGM2
MmIyNjdhZjY0NTcxNGU3NTlkMmRjYWFiMTNhMTBhNzIuLjczN2JmNTQ2NDkyNDRmODIxZmJiNGE0
ZTY5ZmIwZWZiZjFmM2ZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIpOwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTUxLDcgKzUy
LDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAs
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIiwgJkRP
TUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFz
c0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywg
JkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcikgfTsK
IAogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTg0LDcgKzg3LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lclByb3RvdHlwZVRhYmxlID0geyAyLCAxLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJkpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKSB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
JkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKSB9OwogCiBK
U09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6c2VsZihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC0xMDMsNyAr
MTA2LDcgQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG8KICAgICByZXR1cm4gZ2V0U3RhdGljRnVu
Y3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19p
bmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmSlNET01XcmFwcGVyOjpzX2lu
Zm8sICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpIH07Citjb25zdCBDbGFzc0luZm8g
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKSB9OwogCiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBpbXBsKQog
ICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGY0ZDVkZDI5OThmZTc3YTAxNTZhOWJiOTJlODg3
YWRjMWNjM2VjZmUuLjIzNGE2MTRkYjU4NDhjYjM5YjYzMmU1MDEwYjMyNjU2ZWQzZGQxOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOwogCiAvKiBIYXNoIHRhYmxlIGZvciBj
b25zdHJ1Y3RvciAqLwogCkBAIC01MCw3ICs1MSw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIH07
CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yIiwgJkRP
TUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTc0LDcgKzc3LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9
CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JO
YW1lZENvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
TmFtZWRDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3Ry
dWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCkBAIC0xMjUsMTQg
KzEyOCwxNCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENv
bnN0cnVjdG9yUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmSlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkQ29uc3Ry
dWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclBy
b3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90
eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGV4
ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZKU0RPTVdyYXBwZXI6
OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3RydWN0b3JUYWJsZSwgMCAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcikgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNl
OjpzX2luZm8sICZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE5hbWVkQ29uc3RydWN0b3I+
IGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCmluZGV4IDVjN2IwZDFkOGZmY2QyZjI0Yzg4YjZkNDMxM2RkNWRiMmEzMTgwYTEuLjM3OTZm
Yjc5OGMxZmQ1MWY5NjAzYmJjYjM1NzU3YTg5N2Q1MGJiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC02MCw2
ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0T2JqKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEpTVGVzdE9iaik7CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtMTY3LDcgKzE2
OCw5IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTMsIFRl
c3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nCiBDT01QSUxFX0FTU0VSVCgweDFhYmMgPT0g
VGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTRJc1dyb25n
VXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMTUgPT0gVGVzdE9iajo6Q09OU1Rf
SU1QTCwgVGVzdE9iakVudW1DT05TVF9JTVBMSXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIAot
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T2Jq
Q29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywgJkpTVGVzdE9iakNv
bnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3RydWN0
b3IpIH07CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdE9iakNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE9iakNvbnN0cnVjdG9y
VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3RydWN0b3IpIH07CiAK
IEpTVGVzdE9iakNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0
cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpAQCAtMjY5LDcgKzI3Miw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFi
bGUgPSB7IDEzNywgMTI3LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE9ialByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE9ialByb3Rv
dHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJkpTVGVzdE9ialByb3RvdHlw
ZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9ialByb3RvdHlwZSkgfTsKK2Nv
bnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmpQcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFibGUsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0
T2JqUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKQEAgLTI4OCw3ICsyOTEsNyBAQCBib29sIEpTVGVzdE9ialByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZQog
ICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8SlNUZXN0T2JqUHJvdG90eXBl
LCBKU09iamVjdD4oZXhlYywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0T2Jq
OjpzX2luZm8gPSB7ICJUZXN0T2JqIiwgJkpTRE9NV3JhcHBlcjo6c19pbmZvLCAmSlNUZXN0T2Jq
VGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iaikgfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPYmo6OnNfaW5mbyA9IHsgIlRlc3RPYmoiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0T2JqVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iaikgfTsKIAogSlNU
ZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKICAgICA6IEpTRE9NV3Jh
cHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggM2JhYmQzYzFjMTkxNGNl
NjU2MDBiMzY4ZDEzZmYyMjJlODIwMDYyYy4uYmMwY2Y1Y2Y1ZDFlMTE3MWQ4ZTY3YTFhOWE3ZjEx
MzhjZTc0OWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworQVNTRVJUX0hBU19UUklWSUFMX0RF
U1RSVUNUT1IoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKIAogLyogSGFz
aCB0YWJsZSAqLwogCkBAIC01Miw3ICs1Myw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlCiB9
OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5m
byBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yIiwgJkRP
TUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9OworQVNTRVJUX0hBU19U
UklWSUFMX0RFU1RSVUNUT1IoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9Owog
CiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1
Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKQEAgLTg0LDE0ICs4NywxNCBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlVGFibGVWYQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSA9IHsgMSwgMCwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMs
IDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQcm90b3R5cGUiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUpIH07
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGV4ZWMsIGdsb2Jh
bE9iamVjdCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAmSlNET01XcmFwcGVyOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBsKQogICAgIDogSlNET01XcmFwcGVy
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRp
bWVPYmplY3QuY3BwCmluZGV4IDQwMjM4M2U4ODM4OTczMmRiMmNlNjhkNjJkNDYwM2MxNGJmOGJj
OGUuLjZkYzE3ZmYyMmE1NTI2ZDgyNGYzNjlhZDU0Nzk4MTVmM2IxNjI3OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTQ4LDEwICs0OCw2IEBAIHZv
aWQgQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotQ1J1bnRpbWVPYmpl
Y3Q6On5DUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIENJbnN0YW5jZSogQ1J1bnRpbWVPYmplY3Q6
OmdldEludGVybmFsQ0luc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q0luc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9DUnVudGltZU9iamVjdC5oCmluZGV4IGJlZWRkYmIyODMyY2M0YTFhZWZmY2EyMDgzMDYzNjc4
ODNkNDgyNTcuLjZiYzExZmUwYjAyZDI1NGI2YjBlOWJkMDExY2VhYmE3NjE5NzFkNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaApAQCAtNTAsOCArNTAsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q1J1
bnRpbWVPYmplY3QoKTsKLQogICAgIENJbnN0YW5jZSogZ2V0SW50ZXJuYWxDSW5zdGFuY2UoKSBj
b25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuY3BwCmluZGV4IDlk
NTE3ZTM5ODA5ODkwNzRhNThhZDQwMGQ3MjQ0OWUyOGMyYjEzMDIuLjg0YTNlZjMxOWFiN2ZhZjVm
ODVlZDlkYTYwMGMwMDFkOWEwYTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAKQEAgLTQ2LDEwICs0Niw2IEBAIHZvaWQg
SmF2YVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotSmF2YVJ1bnRpbWVP
YmplY3Q6On5KYXZhUnVudGltZU9iamVjdCgpCi17Ci19Ci0KIEphdmFJbnN0YW5jZSogSmF2YVJ1
bnRpbWVPYmplY3Q6OmdldEludGVybmFsSmF2YUluc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SmF2YUluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCmlu
ZGV4IGViZWRkNzY2ZjNjZDlkZjUxYjg1N2U5N2ZiZDEzMmU0OTgzZTBmNGMuLjg0OWEwMDc3ZWI2
ZmMyZWExNTljM2JiMDFhMDhmNjFhMGZlY2JjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaApAQCAtNDgsOCArNDgsNiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SmF2YVJ1
bnRpbWVPYmplY3QoKTsKLQogICAgIEphdmFJbnN0YW5jZSogZ2V0SW50ZXJuYWxKYXZhSW5zdGFu
Y2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKaW5kZXggMmRhYmZj
NDBjMTdkNTc2ZTM5MDk5ZGYyNDkzOGE3ZTlhZTRmYjAyYy4uMGQ4ODUxZTFkNWQ4YzI2YmY3NTkw
MDQwNjJjNjNhYzQ0M2Y4NTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9P
YmpDUnVudGltZU9iamVjdC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5PYmpDUnVudGltZU9iamVjdCgpOwot
CiAgICAgT2JqY0luc3RhbmNlKiBnZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpIGNvbnN0OwogCiAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCmluZGV4IGI5MjRmYWQzM2M4Y2NkMTBlODQ1
MjJiNjE2NjhiYTAzZGFlZjU0ZTYuLjdiYjE3NmM2YmZmNWY1NDM3MDI2OTUyZWYzYzk5YTdjYWJm
NWUwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1l
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2Jq
ZWN0Lm1tCkBAIC00NiwxMCArNDYsNiBAQCB2b2lkIE9iakNSdW50aW1lT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CiB9CiAKLU9iakNSdW50aW1lT2JqZWN0Ojp+T2JqQ1J1bnRpbWVPYmplY3Qo
KQotewotfQotCiBPYmpjSW5zdGFuY2UqIE9iakNSdW50aW1lT2JqZWN0OjpnZXRJbnRlcm5hbE9i
akNJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9iamNJbnN0YW5j
ZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oCmluZGV4IGU3MjBlZjYwNjc2NGJkOGJiZGNmMmMxYWYzZGE1NjQ1MTcyYWRm
ZDYuLjYwMjU1OTQ1MGE1MGI0ZmMzNDdjODhlODY3MjlkM2ZmNDQ1MDg4YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCi0gICAgdmlydHVhbCBib29sIHRvQm9v
bGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBj
b25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2Yg
dGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhp
cyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKICAgICBSZWZQdHI8T2JqY0luc3RhbmNlPiBfaW5zdGFu
Y2U7CiAgICAgSWRlbnRpZmllciBfaXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbQppbmRleCA1NTliOTAyMzdmZDAwNWQ3MWU0MDJmZDQ3MTI1NDA3ZmQxOGY2
NDNjLi43MmZlZGM3NDVhZmM0MTM0OTcxMzIwNmUzMmM0Y2QxNjAxMWQ4MzYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0xOTksNiArMTk5LDExIEBA
IE9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjCiB7CiB9CiAKK3ZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKj4oY2VsbCktPk9iamNGYWxsYmFja09iamVjdEltcDo6fk9iamNGYWxsYmFja09iamVj
dEltcCgpOworfQorCiB2b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6ZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
cnVudGltZS5jcHAKaW5kZXggYTliN2ZhNzM3ZWVlY2ExODhmMjc5OTFhNGJmZjQyNmJjZTE4OWQy
My4uYWM2MTk4NmEzMGI3ZDc2ZTIwMjEwYjRiZjMwZjQyZmUxM2U4MGVmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBK
U1JlYWxUeXBlIHZhbHVlUmVhbFR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbCkKICAg
ICAgICAgcmV0dXJuIEJvb2xlYW47CiAgICAgZWxzZSBpZiAodmFsLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gTnVsbDsKLSAgICBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KCZleGVjLT5nbG9iYWxE
YXRhKCksIHZhbCkpCisgICAgZWxzZSBpZiAoaXNKU0J5dGVBcnJheSh2YWwpKQogICAgICAgICBy
ZXR1cm4gSlNCeXRlQXJyYXk7CiAgICAgZWxzZSBpZiAodmFsLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgSlNPYmplY3QgKm9iamVjdCA9IHZhbC50b09iamVjdChleGVjKTsKQEAgLTk4MCw2ICs5ODAs
MTEgQEAgUXRSdW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKCkKICAgICBkZWxldGUgZF9w
dHI7CiB9CiAKK3ZvaWQgUXRSdW50aW1lTWV0aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sK
KyAgICBqc0Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oY2VsbCktPlF0UnVudGltZU1ldGhvZDo6flF0
UnVudGltZU1ldGhvZCgpOworfQorCiAvLyA9PT09PT09PT09PT09PT0KIAogUXRSdW50aW1lTWV0
aG9kRGF0YTo6flF0UnVudGltZU1ldGhvZERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmgKaW5kZXggNjI5Yzc5Njk4OGY1YzVlZTgxY2MzOWIwOGNkMDY0NTk3MGVlOWY2OC4u
NDA2OTk3ZjM0YTYzMWQ2NjZmNDA1ZWI4NTI5ZjM2MzBmYmNkMTNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDggQEAgY2xhc3MgUXRSdW50aW1l
TWV0aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgdmlydHVhbCB+UXRSdW50aW1lTWV0aG9kKCk7
CisgICAgflF0UnVudGltZU1ldGhvZCgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGRlM2FjMGI4MTUwOTUwMjczMjFlYjcxNWNm
M2MyY2MzZmFhMWI4YWIuLjdkZWQ2NzMwNzgwZGZmZTY5ODJmMGRmZGYzM2E4OGZmZWQ1NDk4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTU0LDYgKzU0LDEx
IEBAIFJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpCiAgICAgZGVsZXRlIGdldENvbmNyZXRl
QXJyYXkoKTsKIH0KIAordm9pZCBSdW50aW1lQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGlt
ZUFycmF5KCk7Cit9CisKIEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgUnVudGlt
ZUFycmF5KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IDc4NjBkMzE3
MmFhNDhhMzlkM2U5NDQxMGU2YzkzNDQ0MzE5ODAzZTcuLjU1MzBjYjM0NzM3ZjcwM2M5NGM2YzVj
N2ViMjA0ZDFkMTNkNzc2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApA
QCAtNDcsNyArNDcsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdHlwZWRlZiBCaW5kaW5nczo6
QXJyYXkgQmluZGluZ3NBcnJheTsKLSAgICB2aXJ0dWFsIH5SdW50aW1lQXJyYXkoKTsKKyAgICB+
UnVudGltZUFycmF5KCk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmlu
ZGV4IDlhYTNlNGZiYzk4MzlhZGY2N2M4OGFkYjM2MjFhNjFjOTU3NDVkNmEuLjZiODYyMzE1Zjkw
YWY5Njc0MDFjN2NlMTA1MzVkMzljYzZkODc0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcApAQCAtNTAsOCArNTAsOSBAQCBSdW50aW1lTWV0aG9kOjpSdW50aW1l
TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LAogewogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OnZ0YWJsZUFuY2hvcigpCit2b2lkIFJ1bnRp
bWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxSdW50aW1lTWV0
aG9kKj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7CiB9CiAKIHZvaWQg
UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmgKaW5kZXggNDBlZGExMzQxZGFlZWUxMjYwZTUwMmE4MWQ3MzgzYzY2YWI2MzI2YS4uZjc5NTVh
MTIyMzE5ZmI2MzVlMmI2OGQ1MTNkYzVhNTI4YWYyNThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUnVudGltZU1ldGhvZCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKIAotICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0
aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAppbmRleCA0YWJiYzhlYWUxZjIzZmU2YmYxN2QzYTkwNDM5MDAzMjY4YjEyOWMz
Li43ZWMwODdkMzU2NGQ1OTc4OTY5YTMwY2VjMTc2MTQwNzQ1NjM0YjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTQ5LDkgKzQ5LDExIEBAIHZvaWQgUnVu
dGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1SdW50aW1lT2JqZWN0Ojp+UnVu
dGltZU9iamVjdCgpCit2b2lkIFJ1bnRpbWVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQog
ewotICAgIEFTU0VSVCghbV9pbnN0YW5jZSk7CisgICAgUnVudGltZU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0
LT5tX2luc3RhbmNlKTsKKyAgICB0aGlzT2JqZWN0LT5SdW50aW1lT2JqZWN0Ojp+UnVudGltZU9i
amVjdCgpOwogfQogCiB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCAwNTA0MzM2ZWI4YWY1MzVkMmViZGMxNjQ5
ZWRkMGEzYjU2NTczODkyLi42NDM3MTUxOGJiNzRlN2IzMjA2NjNmMTc0OTE3ZDRmM2I1OGJhNGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
UnVudGltZU9iamVjdCgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
aAppbmRleCBjMTY0NjgwNGIyZWI4ZjA1MjA4ZDUxZjc1NTliZTk1OTFjYzE4NGUyLi44MzRmOWI4
YWQzMGM5MWFhMjdjY2JjZmJhMTA5YzRmZDUxNzZjNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaApAQCAtNDksOCAr
NDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+UHJveHlSdW50aW1lT2JqZWN0KCk7Ci0KICAgICBQcm94eUluc3RhbmNlKiBnZXRJbnRl
cm5hbFByb3h5SW5zdGFuY2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
bW0KaW5kZXggZjUzMTkyNDljYjhjZmVmYmUwNTJjMzE1NWQxYzliMDZkZGI0NzM1OS4uYzI3ZTcy
OGNkZWY3YzRhOGE0ZDhjOWI1Yzk0NGViY2ZlZWQ1NzI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQpAQCAtNDcs
MTAgKzQ3LDYgQEAgdm9pZCBQcm94eVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
IH0KIAotUHJveHlSdW50aW1lT2JqZWN0Ojp+UHJveHlSdW50aW1lT2JqZWN0KCkKLXsKLX0KLQog
UHJveHlJbnN0YW5jZSogUHJveHlSdW50aW1lT2JqZWN0OjpnZXRJbnRlcm5hbFByb3h5SW5zdGFu
Y2UoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oZ2V0
SW50ZXJuYWxJbnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBkM2QxMDBhODQ5NWRk
MGM5MzJlM2NiODJmZWZlMzdkNWU3MDRiNWFlLi44OTgxNDcxMzU3YjJhZTViNmJlY2QwZDY2MWNi
NDA4ODQ5ZTk2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCkBAIC0zOSw2ICszOSw4IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorQVNTRVJUX0hBU19U
UklWSUFMX0RFU1RSVUNUT1IoSlNOUE1ldGhvZCk7CisKIGNvbnN0IENsYXNzSW5mbyBKU05QTWV0
aG9kOjpzX2luZm8gPSB7ICJOUE1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOUE1ldGhvZCkgfTsKIAogSlNOUE1ldGhvZDo6SlNO
UE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBhMmZk
MjI2ZGVkZGUyZWQ5ODg1OWRlMmIwOGUxNThmOTBmMmNkZWI2Li5hYTU2YTM3NTI3Njc1ZTk0NWZm
YjBiY2M1NTVmNTBjZDUyNWNiYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC03NCw2ICs3NCwx
MSBAQCBKU05QT2JqZWN0Ojp+SlNOUE9iamVjdCgpCiAgICAgQVNTRVJUKCFtX25wT2JqZWN0KTsK
IH0KIAordm9pZCBKU05QT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nh
c3Q8SlNOUE9iamVjdCo+KGNlbGwpLT5KU05QT2JqZWN0Ojp+SlNOUE9iamVjdCgpOworfQorCiB2
b2lkIEpTTlBPYmplY3Q6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX25wT2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5oCmluZGV4IDRiOWFkN2NhZDE5MzQ5ZTI4ZjdlZDcxMjk3M2FkNTc4ODMzZjQ1
NWYuLjdmMjZmMGQ2NzM2YmI2ZGIyZjMyM2RmMmIwN2Y5ZjAyMmQ1MzFiNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgfkpTTlBPYmplY3Qo
KTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBiNDZmMTU5YmE4ZGFjNGM2OWZlYjA2
MWIyMzg5NjgxODdjZmY2YzgwLi41OWUxMjE3YzI4Yjk3MmM3YzA0MTIzNGM4YTFiNTE1MTljZmZk
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNjgsNiArMTY4LDggQEAgRVhQT1JUUwog
ICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAg
ICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNB
P0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBa
CiAgICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAg
ICAgID9zX2luZm9ASlNET01XcmFwcGVyQFdlYkNvcmVAQDJVQ2xhc3NJbmZvQEpTQ0BAQgorICAg
ICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBR
QkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRU
b1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBa
CiAgICAgICAgID9zZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVUb0ZyYW1lQEZy
YW1lVmlld0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNv
cmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpAQCAtMTg5LDQgKzE5MSwzIEBAIEVYUE9SVFMK
ICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoK
ICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBX
ZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJh
bWVWaWV3QDJAWFoKLSAgICAgICAgP3ZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVA
SlNET01XcmFwcGVyQFdlYkNvcmVAQE1BRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmCmluZGV4IGU1N2RjZGI4NmY2ZGE5ODBkNTBjNGUxYjBkNmM4NjU5YTQ0MmM1M2MuLmYwYmYx
OGIxMWFjZTI3ZmY0MTI4ZDg3YjhlYWYwY2QxZDliMzcyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYKQEAgLTE4Miw0ICsxODIsMyBAQCBFWFBPUlRTCiAgICAgICAgID90b1Jh
bmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCiAgICAgICAgID91cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCi0g
ICAgICAgID92aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlQEpTRE9NV3JhcHBlckBX
ZWJDb3JlQEBNQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDQwY2I3OGJiNTNmZTQ0
OTYyMDZiYTBmM2ExNDk5OThiNWY5ZGQ3NzguLjMyYTJjYTk5NWNkMTYxYzM1OWEwY2YyYjUxNTRh
MjRiZjI1YWVhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
KysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDEsNyArNDEsNiBAQCBf
Wk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXY7CiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJL
TlNfN0ludFJlY3RFOwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVyYXRlZFN0cmVh
bUV2OwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7Ci1fWk43V2ViQ29yZTEy
SlNET01XcmFwcGVyMzR2aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlRXY7CiBfWk43
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0Vs
ZW1lbnRFaWliOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJqUzZfOwogX1pON1dlYkNvcmUx
MlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50
RVBLTlNfNVJhbmdlRVJtUzZfOwpAQCAtNjksNiArNjgsNyBAQCBfWk43V2ViQ29yZTlKU0VsZW1l
bnQ2c19pbmZvRTsKIF9aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRTsKIF9aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViOwogX1pOSzdX
ZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTRzdWdnZXN0ZWRWYWx1ZUV2OworX1pOSzdXZWJDb3Jl
MTdKU0RPTUdsb2JhbE9iamVjdDIyc2NyaXB0RXhlY3V0aW9uQ29udGV4dEV2OwogX1pOSzdXZWJD
b3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjExaXNQcmVsb2FkZWRFUktOM1dURjZTdHJpbmdFOwog
X1pOSzdXZWJDb3JlMjZIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDIxbGFzdENoYW5nZVdhc1Vz
ZXJFZGl0RXY7CiBfWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdjsKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0YWY5NGZmZWZjNDJjMDlhMjg0N2NkMWMxNTk2YzJj
MWUyZDE0OTFmLi4yZWZlM2NhOGNmNzVjYTgyYmU5NjQ5OGU2Mjg2NDRlMzlkMDVjNzZkIDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEt
MTItMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBEZS12aXJ0dWFsaXplIGRlc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogUmVt
b3ZlZCBzeW1ib2wgbm8gbG9uZ2VyIHByZXNlbnQuCisKIDIwMTEtMTItMTQgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgbWFudWFsIHRlc3QgZm9yIGNh
cmV0IGJsaW5raW5nIGR1cmluZyBmb3J3YXJkIGRlbGV0aW9uCg==
</data>
<flag name="review"
          id="119465"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="119605"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>119639</attachid>
            <date>2011-12-16 11:22:54 -0800</date>
            <delta_ts>2011-12-16 11:22:54 -0800</delta_ts>
            <desc>Bencher results</desc>
            <filename>ToT_noVptrs_SunSpiderV8Kraken_20111213_1253_benchReport.txt</filename>
            <type>text/plain</type>
            <size>7198</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBWOCwgYW5kIEtyYWtlbiBvbiBNYXJrcy1N
YWMtUHJvLmxvY2FsIChNYWNQcm81LDEpLgoKVk1zIHRlc3RlZDoKIlRvVCIgYXQgL1ZvbHVtZXMv
RGF0YS9XZWJLaXQtdHJ1ZS1jbGVhbi9XZWJLaXRCdWlsZC9SZWxlYXNlL2pzYwoibm9WcHRycyIg
YXQgL1ZvbHVtZXMvRGF0YS9XZWJLaXQta2lsbGFsbHZwdHJzL1dlYktpdEJ1aWxkL1JlbGVhc2Uv
anNjCgpDb2xsZWN0ZWQgMTQ0IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCAxMiBWTSBp
bnZvY2F0aW9ucyBwZXIgYmVuY2htYXJrLiBFbWl0dGVkIGEgY2FsbCB0byBnYygpIGJldHdlZW4K
c2FtcGxlIG1lYXN1cmVtZW50cy4gVXNlZCAxIGJlbmNobWFyayBpdGVyYXRpb24gcGVyIFZNIGlu
dm9jYXRpb24gZm9yIHdhcm0tdXAuIFVzZWQgdGhlIGpzYy1zcGVjaWZpYwpwcmVjaXNlVGltZSgp
IGZ1bmN0aW9uIHRvIGdldCBtaWNyb3NlY29uZC1sZXZlbCB0aW1pbmcuIFJlcG9ydGluZyBiZW5j
aG1hcmsgZXhlY3V0aW9uIHRpbWVzIHdpdGggOTUlIGNvbmZpZGVuY2UKaW50ZXJ2YWxzIGluIG1p
bGxpc2Vjb25kcy4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVG9UICAgICAgICAgICAgICAgICAgIG5vVnB0cnMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgClN1blNwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNy4zNTIzKy0wLjAxMTcgICAgICAgICAgNy4zNDAxKy0wLjAwOTYgICAgICAgCiAg
IDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMzAxNistMC4wMTgyICAg
ICEgICAgIDguMzc0NistMC4wMjg2ICAgICAgICEgZGVmaW5pdGVseSAxLjAwODh4IHNsb3dlcgog
ICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjYyNTgrLTAuMDEyNiAg
ICAhICAgICA3LjY2NTArLTAuMDIwNCAgICAgICAhIGRlZmluaXRlbHkgMS4wMDUxeCBzbG93ZXIK
ICAgYWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAgICAgICAgICAgICAgMS42MTQwKy0wLjAwOTkg
ICAgPyAgICAgMS42MjQwKy0wLjAxMDMgICAgICAgPwogICBhY2Nlc3MtZmFubmt1Y2ggICAgICAg
ICAgICAgICAgICAgICAgICA3LjQ2OTcrLTAuMDIwMiAgICAhICAgICA3LjUxNDQrLTAuMDA0OSAg
ICAgICAhIGRlZmluaXRlbHkgMS4wMDYweCBzbG93ZXIKICAgYWNjZXNzLW5ib2R5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy45NDc3Ky0wLjAwNjMgICAgICAgICAgMy45NDI2Ky0wLjAwNTMg
ICAgICAgCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTY4MSst
MC4wMTAxICAgID8gICAgIDMuMTkxNSstMC4wMTYwICAgICAgID8KICAgYml0b3BzLTNiaXQtYml0
cy1pbi1ieXRlICAgICAgICAgICAgICAgMS4yMzM4Ky0wLjAwMjMgICAgPyAgICAgMS4yMzY3Ky0w
LjAwMjkgICAgICAgPwogICBiaXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICA0
LjkwODErLTAuMDA5OCAgICA/ICAgICA0LjkxNDYrLTAuMDA5OSAgICAgICA/CiAgIGJpdG9wcy1i
aXR3aXNlLWFuZCAgICAgICAgICAgICAgICAgICAgIDMuMjkyOCstMC4wMDQ1ICAgICEgICAgIDMu
MzA4NystMC4wMDkyICAgICAgICEgZGVmaW5pdGVseSAxLjAwNDh4IHNsb3dlcgogICBiaXRvcHMt
bnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICA1LjY5NTUrLTAuMDE3MiAgICAgICAgICA1
LjY3ODkrLTAuMDE2NiAgICAgICAKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAg
ICAgICAgMi4zNzc5Ky0wLjAwNDYgICAgICAgICAgMi4zNzE4Ky0wLjAwMjggICAgICAgCiAgIGNy
eXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDExOCstMC4wMTc2ICAgICAg
ICAgIDcuNDExNystMC4wMTQyICAgICAgIAogICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjQ1MTgrLTAuMDA2MCAgICAgICAgICAyLjQ0NDgrLTAuMDAzNCAgICAgICAK
ICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xNTYyKy0wLjAwNDYg
ICAgPyAgICAgMi4xNjAyKy0wLjAwNDkgICAgICAgPwogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAg
ICAgICAgICAgICAgICAgIDEwLjc3OTIrLTAuMDM1OSAgICBeICAgIDEwLjYwNzYrLTAuMDMyOSAg
ICAgICBeIGRlZmluaXRlbHkgMS4wMTYyeCBmYXN0ZXIKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAg
ICAgICAgICAgICAgICAgICAgOS44MTkzKy0wLjAyOTYgICAgICAgICAgOS43OTU5Ky0wLjAzMjQg
ICAgICAgCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjMzOSst
MC4wMTY3ICAgID8gICAgIDcuMjM0NistMC4wMTY4ICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1
bXMgICAgICAgICAgICAgICAgICAgICAxMC40MzY3Ky0wLjAwOTcgICAgICAgICAxMC40MjQ4Ky0w
LjAxNDMgICAgICAgCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAgIDIu
NTk5NistMC4wMDMzICAgID8gICAgIDIuNjAwMCstMC4wMDM3ICAgICAgID8KICAgcmVnZXhwLWRu
YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC44ODc3Ky0wLjAxNDMgICAgXiAgICAgOC44
MzMwKy0wLjAxMDUgICAgICAgXiBkZWZpbml0ZWx5IDEuMDA2MnggZmFzdGVyCiAgIHN0cmluZy1i
YXNlNjQgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjYwNCstMC4wMTA5ICAgICEgICAgIDQu
MjkxNSstMC4wMTU0ICAgICAgICEgZGVmaW5pdGVseSAxLjAwNzN4IHNsb3dlcgogICBzdHJpbmct
ZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjI4OTIrLTAuMDE4NCAgICBeICAgICA3
LjIyOTErLTAuMDEwNSAgICAgICBeIGRlZmluaXRlbHkgMS4wMDgzeCBmYXN0ZXIKICAgc3RyaW5n
LXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAgICAgICAxMi4zNTA2Ky0wLjAyNjggICAgISAgICAx
Mi4zOTUyKy0wLjAxMjggICAgICAgISBkZWZpbml0ZWx5IDEuMDAzNnggc2xvd2VyCiAgIHN0cmlu
Zy11bnBhY2stY29kZSAgICAgICAgICAgICAgICAgICAgMjAuNDQ0MSstMC4wMzkwICAgIF4gICAg
MjAuMzM0MSstMC4wMzQxICAgICAgIF4gZGVmaW5pdGVseSAxLjAwNTR4IGZhc3RlcgogICBzdHJp
bmctdmFsaWRhdGUtaW5wdXQgICAgICAgICAgICAgICAgICA1LjU5NzMrLTAuMDE2MyAgICAhICAg
ICA1LjY3MTcrLTAuMDE2NSAgICAgICAhIGRlZmluaXRlbHkgMS4wMTMzeCBzbG93ZXIKCiAgIDxh
cml0aG1ldGljPiAqICAgICAgICAgICAgICAgICAgICAgICAgIDYuNDg4NystMC4wMDQyICAgICAg
ICAgIDYuNDg0NSstMC4wMDM4ICAgICAgIAogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjI3NTIrLTAuMDAyOCAgICA/ICAgICA1LjI3ODcrLTAuMDAyOSAgICAgICA/
CiAgIDxoYXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTY3NystMC4wMDI4
ICAgICEgICAgIDQuMTc0MystMC4wMDMyICAgICAgICEgZGVmaW5pdGVseSAxLjAwMTZ4IHNsb3dl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAg
ICAgICAgICAgICAgICAgbm9WcHRycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKVjg6CiAgIGNyeXB0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzYuMjcxNCst
MC4wOTM3ICAgID8gICAgNzYuMzMzNistMC4wNzY3ICAgICAgID8KICAgZGVsdGFibHVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE2OS43NDMzKy0wLjQzMTkgICAgICAgIDE2OS41NzQyKy0w
LjQ1NjEgICAgICAgCiAgIGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgOTgu
Nzc2MSstMC4xODc5ICAgID8gICAgOTkuMDQ3NCstMC4yMDQ5ICAgICAgID8KICAgcmF5dHJhY2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS4zMjA1Ky0wLjA2MDEgICAgISAgICA1MS44
MjA3Ky0wLjA5MjIgICAgICAgISBkZWZpbml0ZWx5IDEuMDA5N3ggc2xvd2VyCiAgIHJlZ2V4cCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjMuNTMxNystMC4xNzI1ICAgIF4gICAxMjMu
MTI0NSstMC4xMzI2ICAgICAgIF4gZGVmaW5pdGVseSAxLjAwMzN4IGZhc3RlcgogICByaWNoYXJk
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwLjI5MDcrLTAuMjE2NCAgICAgICAgMTQw
LjAxMzArLTAuMTM0MiAgICAgICAKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5MS42NzM2Ky0wLjY4MzQgICAgICAgICA5MS41MTM0Ky0wLjQ3OTcgICAgICAgCgogICA8
YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgMTA3LjM3MjUrLTAuMTIxOSAgICAg
ICAgMTA3LjM0NjcrLTAuMTAwMyAgICAgICAKICAgPGdlb21ldHJpYz4gKiAgICAgICAgICAgICAg
ICAgICAgICAgIDEwMC41ODMzKy0wLjExODEgICAgPyAgIDEwMC42NjQwKy0wLjA5MDQgICAgICAg
PwogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzLjYyNzErLTAuMTA5
OCAgICAhICAgIDkzLjgzODArLTAuMDgzNSAgICAgICAhIGRlZmluaXRlbHkgMS4wMDIzeCBzbG93
ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAg
ICAgICAgICAgICAgICAgIG5vVnB0cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCktyYWtlbjoKICAgYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxOC44
ODEyKy0yLjc0NDkgICAgICAgIDgxNy4yODk0Ky0yLjg3OTMgICAgICAgCiAgIGF1ZGlvLWJlYXQt
ZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAyMDUuMDk2OSstMC4yNzU1ICAgICEgICAyMDUuOTY0
MCstMC4zNTQ5ICAgICAgICEgZGVmaW5pdGVseSAxLjAwNDJ4IHNsb3dlcgogICBhdWRpby1kZnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc2Ljg4MTQrLTEuMTUxNiAgICAgICAgMjc2LjE1
MzgrLTAuNDUyNiAgICAgICAKICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEzMy41ODM1Ky0wLjM1OTkgICAgICAgIDEzMy4yMTI3Ky0wLjMyOTYgICAgICAgCiAgIGF1ZGlv
LW9zY2lsbGF0b3IgICAgICAgICAgICAgICAgICAgICAyODMuMjU4OCstMC45MDgxICAgICAgICAy
ODEuOTE1NistMC43MjE4ICAgICAgIAogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAgICAg
ICAgICAgMzUxLjkyMjgrLTEuOTI5OCAgICAgICAgMzQ5LjIyNDArLTEuNzg1MCAgICAgICAKICAg
aW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAgICAgICAgIDIzNy45MjUwKy0wLjE1MTggICAg
XiAgIDIzNy43MTcwKy0wLjA1MDcgICAgICAgXiBkZWZpbml0ZWx5IDEuMDAwOXggZmFzdGVyCiAg
IGltYWdpbmctZ2F1c3NpYW4tYmx1ciAgICAgICAgICAgICAgICA2MjguNjc1NCstMC42ODE1ICAg
IF4gICA2MjcuMTA5OSstMC4zNTcwICAgICAgIF4gZGVmaW5pdGVseSAxLjAwMjV4IGZhc3Rlcgog
ICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgIDcwLjA1MzcrLTAuMDY2OCAg
ICAhICAgIDcyLjcwMTgrLTAuMTU5MCAgICAgICAhIGRlZmluaXRlbHkgMS4wMzc4eCBzbG93ZXIK
ICAganNvbi1zdHJpbmdpZnktdGluZGVyYm94ICAgICAgICAgICAgICA4Mi4zMDkzKy0wLjEwMTUg
ICAgPyAgICA4Mi4zOTQ3Ky0wLjExMjcgICAgICAgPwogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAg
ICAgICAgICAgICAgICAgMTE4LjI0NTIrLTAuMjUyMiAgICA/ICAgMTE4LjI1NjIrLTAuMjcyNCAg
ICAgICA/CiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAxMTQuMDA4Mist
MC4zNjIxICAgICAgICAxMTMuNzM0NystMC4yOTI0ICAgICAgIAogICBzdGFuZm9yZC1jcnlwdG8t
cGJrZGYyICAgICAgICAgICAgICAgMjMyLjY1OTArLTAuNTA2MCAgICBeICAgMjI5LjYwOTUrLTAu
NTE3OSAgICAgICBeIGRlZmluaXRlbHkgMS4wMTMzeCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRv
LXNoYTI1Ni1pdGVyYXRpdmUgICAgICA5NS44MjIxKy0wLjExNDQgICAgXiAgICA5NS41OTYxKy0w
LjA2NjkgICAgICAgXiBkZWZpbml0ZWx5IDEuMDAyNHggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4g
KiAgICAgICAgICAgICAgICAgICAgICAgMjYwLjY2NTkrLTAuMjg4NiAgICBeICAgMjYwLjA2Mjgr
LTAuMjM2NCAgICAgICBeIGRlZmluaXRlbHkgMS4wMDIzeCBmYXN0ZXIKICAgPGdlb21ldHJpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgIDE5OS42ODMwKy0wLjE2MTMgICAgPyAgIDE5OS43MDYx
Ky0wLjEyMDIgICAgICAgPwogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTU5LjUyMzUrLTAuMTExNyAgICAhICAgMTYwLjIwNTErLTAuMDk5OSAgICAgICAhIGRlZmluaXRl
bHkgMS4wMDQzeCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgIG5vVnB0cnMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCkFsbCBiZW5jaG1hcmtzOgogICA8YXJpdGhtZXRpYz4gICAgICAg
ICAgICAgICAgICAgICAgICAgIDk3LjIyNjMrLTAuMDk0MyAgICBeICAgIDk3LjA0MDUrLTAuMDcy
MiAgICAgICBeIGRlZmluaXRlbHkgMS4wMDE5eCBmYXN0ZXIKICAgPGdlb21ldHJpYz4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAyNC4xNTQxKy0wLjAxMDYgICAgPyAgICAyNC4xNjY2Ky0wLjAw
OTAgICAgICAgPwogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM0
MjYrLTAuMDA0OSAgICAhICAgICA3LjM1NDYrLTAuMDA1NSAgICAgICAhIGRlZmluaXRlbHkgMS4w
MDE2eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVG9UICAgICAgICAgICAgICAgICAgIG5vVnB0cnMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3Vs
dD4gICAgICAgICAgICAgICAgICAgICAgIDU1LjQwOTQrLTAuMDM1NCAgICAgICAgIDU1LjM2OTgr
LTAuMDI0NSAgICAgICAKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>