<?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>68404</bug_id>
          
          <creation_ts>2011-09-19 15:39:11 -0700</creation_ts>
          <short_desc>Add static version of JSCell::visitChildren</short_desc>
          <delta_ts>2011-09-23 12:39:31 -0700</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>
          
          <blocked>67690</blocked>
    
    <blocked>68567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ggaren</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469747</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-19 15:39:11 -0700</bug_when>
    <thetext>In the ongoing effort to un-virtualize JSCell, we need to replace visitChildren with a non-virtual version.  This will eventually be done by adding a function pointer to the ClassInfo struct.

First we need to make a version of visitChildren that we can reference easily as a function pointer.  Since member methods are difficult to work into ClassInfo due to their implicit &quot;this&quot; and the special ways that compilers treat them, we will need to replace them with static methods.  Initially we&apos;ll add them and simply have the current virtual visitChildren call the static methods, which will in turn call their parent static method, etc.  This will preserve the correctness of the code while allowing us to work incrementally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470442</commentid>
    <comment_count>1</comment_count>
      <attachid>108072</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-20 16:14:38 -0700</bug_when>
    <thetext>Created attachment 108072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470445</commentid>
    <comment_count>2</comment_count>
      <attachid>108074</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-20 16:16:20 -0700</bug_when>
    <thetext>Created attachment 108074
Resetting bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470448</commentid>
    <comment_count>3</comment_count>
      <attachid>108074</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-20 16:20:40 -0700</bug_when>
    <thetext>Comment on attachment 108074
Resetting bindings

I think that using the word static in the name of the new function is unclear and not helpful. It would be a shame to be left with that word in the names of functions after this task is done. If we have to rename something to keep these functions out of each others’ way, why not rename the virtual function that we are getting rid of? The new non-virtual version can be named visitChildren and the old could be called visitChildrenVirtual.

These new functions should be private, since they are not intended to be called directly outside of the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470458</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-20 16:30:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 108074 [details])
&gt; I think that using the word static in the name of the new function is unclear and not helpful. It would be a shame to be left with that word in the names of functions after this task is done. If we have to rename something to keep these functions out of each others’ way, why not rename the virtual function that we are getting rid of? The new non-virtual version can be named visitChildren and the old could be called visitChildrenVirtual.

In the end, my goal is to keep visitChildren in just JSCell so that any current call sites to the virtual version are unaffected.  There are a few instances of classes declaring internal visitChildrenDirect() methods.  Perhaps I can adopt that name for these new functions and merge any existing visitChildrenDirect() methods with the new ones?

&gt; These new functions should be private, since they are not intended to be called directly outside of the class.

Some of the visitChildren functions call one another directly (especially children calling parent implementations) so at least some of them shouldn&apos;t be private.  I attempted to duplicate the access permissions of whatever the visitChildren function was before.  I can check for any instances that are incorrect, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470537</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-20 18:22:31 -0700</bug_when>
    <thetext>&gt; In the end, my goal is to keep visitChildren in just JSCell so that any current call sites to the virtual version are unaffected.

I believe there is only one current caller of the virtual visitChildren: SlotVisitor::visitChildren(). (You can verify this by just making it private.) I think you should either remove that function entirely, or, like Darin suggested, give it the worse name (*Virtual).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470538</commentid>
    <comment_count>6</comment_count>
      <attachid>108074</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-20 18:22:55 -0700</bug_when>
    <thetext>Comment on attachment 108074
Resetting bindings

r- for build failure and because I think the naming could be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470987</commentid>
    <comment_count>7</comment_count>
      <attachid>108194</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-21 11:35:17 -0700</bug_when>
    <thetext>Created attachment 108194
Fixing windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471002</commentid>
    <comment_count>8</comment_count>
      <attachid>108199</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-21 11:56:44 -0700</bug_when>
    <thetext>Created attachment 108199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471048</commentid>
    <comment_count>9</comment_count>
      <attachid>108199</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-21 12:32:29 -0700</bug_when>
    <thetext>Comment on attachment 108199
Patch

Looks good. r=me if it builds and is not a perf. regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471074</commentid>
    <comment_count>10</comment_count>
      <attachid>108211</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-21 12:56:27 -0700</bug_when>
    <thetext>Created attachment 108211
Benchmark results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471145</commentid>
    <comment_count>11</comment_count>
      <attachid>108199</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-21 14:06:31 -0700</bug_when>
    <thetext>Comment on attachment 108199
Patch

Attachment 108199 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9770894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471210</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-21 15:31:18 -0700</bug_when>
    <thetext>Not quite sure how to fix the build failure on GTK…link error with a method (JSNode::visitChildrenVirtual) that definitely exists (it&apos;s defined in WebCore/bindings/js/JSNodeCustom.cpp) and is exported in the WebCore.exp.in.  What linker magic does GTK need to get this to work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471228</commentid>
    <comment_count>13</comment_count>
      <attachid>108199</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-21 15:48:02 -0700</bug_when>
    <thetext>Comment on attachment 108199
Patch

Looks like gtk-ews has gone weird</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471248</commentid>
    <comment_count>14</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-21 16:27:29 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Not quite sure how to fix the build failure on GTK…link error with a method (JSNode::visitChildrenVirtual) that definitely exists (it&apos;s defined in WebCore/bindings/js/JSNodeCustom.cpp) and is exported in the WebCore.exp.in.  What linker magic does GTK need to get this to work?

You need to add the symbol the the Source/autotools/symbols.filter to fix the GTK+ build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471310</commentid>
    <comment_count>15</comment_count>
      <attachid>108264</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-21 18:09:18 -0700</bug_when>
    <thetext>Created attachment 108264
Fix GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471338</commentid>
    <comment_count>16</comment_count>
      <attachid>108264</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-21 21:00:12 -0700</bug_when>
    <thetext>Comment on attachment 108264
Fix GTK

Attachment 108264 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9794063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471346</commentid>
    <comment_count>17</comment_count>
      <attachid>108264</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-21 21:11:59 -0700</bug_when>
    <thetext>Comment on attachment 108264
Fix GTK

Attachment 108264 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9793097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471356</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-21 21:59:42 -0700</bug_when>
    <thetext>Is the GTK build failure real? I can&apos;t tell from this output:

/usr/bin/ld:../../Source/autotools/symbols.filter:60: syntax error in VERSION script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471357</commentid>
    <comment_count>19</comment_count>
      <attachid>108264</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-21 22:00:31 -0700</bug_when>
    <thetext>Comment on attachment 108264
Fix GTK

r=me, assuming the GTK build failure really is a syntax error in the VERSION script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471368</commentid>
    <comment_count>20</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-21 23:17:06 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Is the GTK build failure real? I can&apos;t tell from this output:
&gt; 
&gt; /usr/bin/ld:../../Source/autotools/symbols.filter:60: syntax error in VERSION script

Yes. The new line in symbols.filter is missing a semi-colon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471567</commentid>
    <comment_count>21</comment_count>
      <attachid>108335</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-22 08:19:32 -0700</bug_when>
    <thetext>Created attachment 108335
Fix GTK for real</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471572</commentid>
    <comment_count>22</comment_count>
      <attachid>108335</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-22 08:29:01 -0700</bug_when>
    <thetext>Comment on attachment 108335
Fix GTK for real

Attachment 108335 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9792337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471576</commentid>
    <comment_count>23</comment_count>
      <attachid>108335</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-22 08:32:36 -0700</bug_when>
    <thetext>Comment on attachment 108335
Fix GTK for real

Attachment 108335 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9794261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471577</commentid>
    <comment_count>24</comment_count>
      <attachid>108335</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-22 08:34:04 -0700</bug_when>
    <thetext>Comment on attachment 108335
Fix GTK for real

Attachment 108335 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9798236</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471587</commentid>
    <comment_count>25</comment_count>
      <attachid>108340</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-22 08:52:01 -0700</bug_when>
    <thetext>Created attachment 108340
Fix bad merge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471642</commentid>
    <comment_count>26</comment_count>
      <attachid>108340</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-22 09:45:54 -0700</bug_when>
    <thetext>Comment on attachment 108340
Fix bad merge

r=me, assuming it builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472014</commentid>
    <comment_count>27</comment_count>
      <attachid>108340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 18:57:48 -0700</bug_when>
    <thetext>Comment on attachment 108340
Fix bad merge

Rejecting attachment 108340 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:
ore/bindings/scripts/test/JS/JSTestObj.cpp
patching file Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
patching file Source/WebCore/bridge/qt/qt_instance.cpp
patching file Source/WebCore/bridge/qt/qt_runtime.cpp
patching file Source/WebCore/bridge/qt/qt_runtime.h
patching file Source/WebCore/workers/WorkerContext.h
patching file Source/autotools/symbols.filter

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/9769015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472092</commentid>
    <comment_count>28</comment_count>
      <attachid>108445</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-22 23:53:12 -0700</bug_when>
    <thetext>Created attachment 108445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472107</commentid>
    <comment_count>29</comment_count>
      <attachid>108445</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-23 01:30:08 -0700</bug_when>
    <thetext>Comment on attachment 108445
Patch

Attachment 108445 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9815120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472112</commentid>
    <comment_count>30</comment_count>
      <attachid>108445</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-23 02:07:16 -0700</bug_when>
    <thetext>Comment on attachment 108445
Patch

Attachment 108445 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9811222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472269</commentid>
    <comment_count>31</comment_count>
      <attachid>108482</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-23 09:06:01 -0700</bug_when>
    <thetext>Created attachment 108482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472318</commentid>
    <comment_count>32</comment_count>
      <attachid>108482</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 10:39:29 -0700</bug_when>
    <thetext>Comment on attachment 108482
Patch

Rejecting attachment 108482 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:
o-playing-and-pause.html = MISSING PASS


Regressions: Unexpected image and text mismatch : (1)
  svg/custom/svg-fonts-word-spacing.html = IMAGE+TEXT

Regressions: Unexpected image mismatch : (5)
  fast/text/atsui-multiple-renderers.html = IMAGE
  fast/text/international/danda-space.html = IMAGE
  fast/text/international/thai-baht-space.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE



Full output: http://queues.webkit.org/results/9801615</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472324</commentid>
    <comment_count>33</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-23 10:46:05 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 108482 [details])
&gt; Rejecting attachment 108482 [details] from commit-queue.
&gt; 
&gt; 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
&gt; 
&gt; Last 500 characters of output:
&gt; o-playing-and-pause.html = MISSING PASS
&gt; 
&gt; 
&gt; Regressions: Unexpected image and text mismatch : (1)
&gt;   svg/custom/svg-fonts-word-spacing.html = IMAGE+TEXT
&gt; 
&gt; Regressions: Unexpected image mismatch : (5)
&gt;   fast/text/atsui-multiple-renderers.html = IMAGE
&gt;   fast/text/international/danda-space.html = IMAGE
&gt;   fast/text/international/thai-baht-space.html = IMAGE
&gt;   fast/text/international/thai-line-breaks.html = IMAGE
&gt;   platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE
&gt; 
&gt; 
&gt; 
&gt; Full output: http://queues.webkit.org/results/9801615

I don&apos;t think this is an actual failure :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472410</commentid>
    <comment_count>34</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-23 12:39:31 -0700</bug_when>
    <thetext>Committed r95849: &lt;http://trac.webkit.org/changeset/95849&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108072</attachid>
            <date>2011-09-20 16:14:38 -0700</date>
            <delta_ts>2011-09-20 16:16:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68404-20110920161438.patch</filename>
            <type>text/plain</type>
            <size>102217</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZk
ODEwNTk2My4uOWRhZTE3Y2I1ZTJjZTM2MmNmN2UxNTdjNjc0ZTIwZWQxZWI3OWE2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5OCwxMSAr
MTk4LDE3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoKHN0YXRpY19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c19pbmZvKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAg
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlz
T2JqZWN0KSksICZKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQ
YXJlbnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxs
YmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5QYXJlbnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEt
PnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTE5OGUyOTIzZWQwMGQ5YWYyMTZkYmFm
ZjcxZWMyYzE0MTIxNTVlMy4uZWZlNjM5ZmRkMDFlYWM1MWQyZTcyNjU1MDE0Y2I4YzExMTA3OTU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDExLTA5LTIw
ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0
cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAg
ICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwgaW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRv
IHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUgCisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUg
dmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcg
dG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8g
b3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3JlZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2Ug
bmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2RzIHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRv
IGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUgZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVt
IGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNlIG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhv
ZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZvcm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5n
IGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRvIHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xh
c3NJbmZvLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNr
LmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjpTbG90VmlzaXRvcjo6ZHJhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1l
L0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OkV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RXZh
bEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAoSlNDOjpQcm9ncmFt
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2
aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNl
dHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRD
aGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlv
bjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGls
ZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29w
ZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVu
U3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTV3JhcHBl
ck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6
dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9T
Y29wZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6
CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKwogMjAxMS0wOS0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIEhlYXAgYWxsb2NhdGlvbiBsb2dpYyBp
bnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNTI4YTUxNDhjZjU3NGU0YmVkYWJlYzVjMjNlMzg2MjVm
MTcyMDkzYi4uM2E2NTMyYjQzMDBiZDk0YzQ4YWVkZmQ2MzVmMmRkMzlmYTkyOTA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNjcsNiArMTY3LDcgQEAg
X19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9y
RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZhZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9i
YWxQcm9wZXJ0eUluZm9FaQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmli
dXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVqCiBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzE0SlNHbG9iYWxP
YmplY3QxOXZpc2l0Q2hpbGRyZW5TdGF0aWNFUE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0b3JF
CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBf
X1pOM0pTQzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUgIAogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0NGluaXRFUE5TXzhKU09iamVjdEUKQEAgLTMyNCw2ICszMjUsNyBAQCBfX1pOM0pT
QzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVl
RWoKIF9fWk4zSlNDOEpTT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVF
alJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpTT2JqZWN0MThnZXRQcmltaXRpdmVOdW1i
ZXJFUE5TXzlFeGVjU3RhdGVFUmRSTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzhKU09iamVjdDE5Z2V0
T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVO
U18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDOEpTT2JqZWN0MTl2aXNpdENoaWxkcmVuU3Rh
dGljRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M4SlNPYmplY3QyMWdl
dFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNf
MThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhKU09iamVjdDIyZmlsbEdldHRlclByb3Bl
cnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5TXzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5r
bm93bkVFRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlRVJOU18x
MkpTR2xvYmFsRGF0YUVtbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCBhZjZhNTZmOWJlMmE2MDQ3ODJjODUwYzMx
ZWY1OWQyZjQwY2RmNTBjLi5lOTc4YzA5YTdjZGI5MTczNDFkNWViNmRhYzU4MTNlOTEwMGI3ZGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcApAQCAtNDUsMTMgKzQ1LDE5IEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9u
OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBhY3Rp
CiAKIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAobV9hY3RpdmF0aW9uKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9hY3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9h
Y3RpdmF0aW9uKTsKIH0KIAogVVN0cmluZyBEZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNzTmFtZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmgKaW5kZXggY2NkYmRlOGY2Y2I0MGFiNzE5ZDU0ODZhMGE0ODU0ZTcwOGZhOWY3
Mi4uNjEzYjg4NTExZTljYzc1M2IwZTkzM2Q3ZmYyOWZkNTk0NDY3MTVkNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAt
NDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IGZkNjY4YmQ5
ZWRiNjk4MTFjYmEzOTdlYTc4ZGNiNzEyOTVkYzUyOWQuLmY5NjZmNmYzMjU3YjIwNjZmNTM5Zjhj
ZDczMWZjOWNhNmRhZmM1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwpCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwog
ICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5
cGUpIHsKLSAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAg
ICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKGNlbGwsICp0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWlu
KCkKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgICAgICAgICAgICAgIG1f
dmlzaXRlZFR5cGVDb3VudHMuY291bnQoY2VsbCk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBj
ZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOworICAgICAgICAgICAgICAgIEpTQ2Vs
bDo6dmlzaXRDaGlsZHJlblN0YXRpYyhjZWxsLCAqdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbWFya1Nl
dHMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IGVjNmNjOGYxYzcyMDdk
YTgzYWYxNTE0MjZiOWY1ODFiMTk4NDZjNDkuLmJiMWI1YjdhMWQyZmRlZjUzMDdlYzkwOWNiZGZk
YjY3MGM5YzkxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcApAQCAtNDUsMjMgKzQ1LDI5IEBAIEFyZ3VtZW50czo6fkFyZ3VtZW50cygpCiAKIHZvaWQg
QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
blN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBBcmd1
bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoZC0+
cmVnaXN0ZXJBcnJheSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoZC0+cmVnaXN0ZXJB
cnJheS5nZXQoKSwgZC0+bnVtUGFyYW1ldGVycyk7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJl
Z2lzdGVyQXJyYXkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmQt
PnJlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPmQtPm51bVBhcmFtZXRlcnMpOwogCi0g
ICAgaWYgKGQtPmV4dHJhQXJndW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bUV4dHJhQXJn
dW1lbnRzID0gZC0+bnVtQXJndW1lbnRzIC0gZC0+bnVtUGFyYW1ldGVyczsKLSAgICAgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXMoZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4dHJhQXJndW1lbnRzKTsK
KyAgICBpZiAodGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVudHMpIHsKKyAgICAgICAgdW5zaWdu
ZWQgbnVtRXh0cmFBcmd1bWVudHMgPSB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgLSB0aGlz
T2JqZWN0LT5kLT5udW1QYXJhbWV0ZXJzOworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT5kLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0cmFBcmd1bWVudHMpOwogICAgIH0K
IAotICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5kLT5jYWxsZWUpOwogCi0gICAgaWYgKGQtPmFjdGl2YXRpb24pCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZkLT5hY3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+
YWN0aXZhdGlvbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmFjdGl2
YXRpb24pOwogfQogCiB2b2lkIEFyZ3VtZW50czo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0ZSog
ZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggNTYxMTNkZmE2MWQwOTIyNWQxY2JjMTlj
MzljZjMyYTE0MzIzYjY3Mi4uY2UyMjRlMTljZTAyODdkM2RhOWEwOTU0OGY3ZWExNjZiZmQ5Y2M3
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTkxLDYg
KzkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgICAgICB2b2lkIGZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSosIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKaW5kZXggYWY0ZDJjOTRhNTdkMTM0ZTEwMWIxMGI2YWM3YjAyNGEyNjdkMmU4
ZC4uNDllMTQ0M2IxNjE5YzhkNGNmYzVjYmYzMWU4YjIxOWFlOGFkMDdlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIxMywxMiArMjEzLDE4
IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlCiAKIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgRXZhbEV4ZWN1dGFibGUq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2V2YWxDb2RlQmxvY2sp
Ci0gICAgICAgIG1fZXZhbENvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2Nr
KQorICAgICAgICB0aGlzT2JqZWN0LT5tX2V2YWxDb2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOwogfQogCiB2b2lkIEV2YWxFeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCkBAIC0zNDIs
MTIgKzM0OCwxOCBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCiAKIHZv
aWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2
aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFByb2dyYW1FeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxh
Z3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91
dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwotICAgIGlmIChtX3Byb2dyYW1Db2RlQmxvY2spCi0gICAgICAgIG1fcHJvZ3Jh
bUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0
aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwog
fQogCiB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQpAQCAtNTM1LDE2ICs1NDcs
MjIgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdElu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKIAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRo
aXMsIHZpc2l0b3IpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
blN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlm
IChtX25hbWVWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fbmFtZVZhbHVlKTsKLSAg
ICBpZiAobV9jb2RlQmxvY2tGb3JDYWxsKQotICAgICAgICBtX2NvZGVCbG9ja0ZvckNhbGwtPnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIGlmIChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkK
LSAgICAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3Ip
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5T
dGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fbmFtZVZh
bHVlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lVmFsdWUpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwpCisgICAgICAgIHRoaXNPYmpl
Y3QtPm1fY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgaWYg
KHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQorICAgICAgICB0aGlzT2JqZWN0
LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAK
IHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpkaXNjYXJkQ29kZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMDc2NzZhZTY2YTk0Y2JmNzJmMTU2OGU2
MmNhZmMxNDc1OThiZTA4OC4uNGZhZDM2MzNkNTFhNzRlODFiYTYxMjViZWUwN2E3MTk0ZmI2NjVk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzYz
LDYgKzM2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRUeXBlKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogICAgICAgICB2b2lkIHVubGlua0NhbGxzKCk7CiAKICAgICAgICAgT3duUHRyPEV2YWxDb2Rl
QmxvY2s+IG1fZXZhbENvZGVCbG9jazsKQEAgLTQyNCw2ICs0MjUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCB1bmxpbmtDYWxs
cygpOwogCiAgICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxv
Y2s7CkBAIC01NjMsNiArNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBk
aXNjYXJkQ29kZSgpOwogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA5OTAyYjc2OGYyNjg2Njli
ODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li44NWRmOGM1YjQ2NTczMTc0MThlZWZjYzA1NzRlNGUz
NWQyNGRmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAKQEAgLTMyLDE0ICszMiwyMCBAQCBjb25zdCBDbGFzc0luZm8gR2V0dGVyU2V0dGVy
OjpzX2luZm8gPSB7ICJHZXR0ZXJTZXR0ZXIiLCAwLCAwLCAwIH07CiAKIHZvaWQgR2V0dGVyU2V0
dGVyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNDZWxsOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOwotCi0gICAgaWYgKG1fZ2V0dGVyKQotICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9nZXR0ZXIpOwotICAgIGlmIChtX3NldHRlcikKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fc2V0dGVyKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdldHRlclNldHRlciogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEdldHRlclNldHRlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
SlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
aWYgKHRoaXNPYmplY3QtPm1fZ2V0dGVyKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9nZXR0ZXIpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3NldHRlcikKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2V0dGVyKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmlu
ZGV4IDE5Y2RiZGRiMDEyYWEyNDk1YTY0MmRiMGYwMjQ4ZTcyNmJiNTE4ZmYuLmQyMTA1MDQ5NDJi
ZjQ0MTRmNjNiMzdkNTNhODc4MzE5MDFhZTQ2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2dldHRlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERh
dGEsIHRoaXMsIGdldHRlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwCmluZGV4IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVkNTQ5NzFjOGZi
ZDg4NWUuLjVhZGIwODIxNjA0YzJmYTYwZDBhMGI0NjI0ZDVkNTQ1NWEzNjhhNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNjUsMjAg
KzY1LDI2IEBAIEpTQWN0aXZhdGlvbjo6fkpTQWN0aXZhdGlvbigpCiAKIHZvaWQgSlNBY3RpdmF0
aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRp
Yyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5T
dGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FjdGl2
YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gTm8gbmVlZCB0
byBtYXJrIG91ciByZWdpc3RlcnMgaWYgdGhleSdyZSBzdGlsbCBpbiB0aGUgUmVnaXN0ZXJGaWxl
LgotICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IG1fcmVnaXN0ZXJB
cnJheS5nZXQoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyQXJyYXkgPSB0
aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7CiAgICAgaWYgKCFyZWdpc3RlckFycmF5
KQogICAgICAgICByZXR1cm47CiAKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFy
cmF5LCBtX251bVBhcmFtZXRlcnNNaW51c1RoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHJlZ2lzdGVyQXJyYXksIHRoaXNPYmplY3QtPm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyk7CiAK
ICAgICAvLyBTa2lwIHRoZSBjYWxsIGZyYW1lLCB3aGljaCBzaXRzIGJldHdlZW4gdGhlIHBhcmFt
ZXRlcnMgYW5kIHZhcnMuCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSAr
IG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSwgbV9udW1DYXB0dXJlZFZhcnMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXkgKyB0aGlzT2JqZWN0LT5tX251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUsIHRoaXNPYmplY3QtPm1fbnVtQ2FwdHVyZWRWYXJz
KTsKIH0KIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggZDg2MzU5M2IzMmIxODA0
YjYxNmU3YmE1YmM4YmYxY2M1YTZhNWY5YS4uMDJmODJhNzJjZTk4NzI4ZGJjZDgzOTljMzYwNGRi
NjUxY2Q0MTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwg
fkpTQWN0aXZhdGlvbigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2Nv
cGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA0YjBjYWEyMjE2ODJmNmM2OGE2MDVlOGFm
OWU1NDA2NjU4YzAzMmNhLi5jOTAxZjVjYTI2NTRlZGFjYmE5ODg2MTk2ZDU5NDQxZmUzNzBjOGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtODczLDEw
ICs4NzMsMTYgQEAgdm9pZCBKU0FycmF5Ojp1bnNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjLCBp
bnQgY291bnQpCiAKIHZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBcnJh
eTo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0FycmF5Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgdGhp
c09iamVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKIH0KIAogc3RhdGljIGludCBj
b21wYXJlTnVtYmVyc0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggNTY2MjIyNWU1N2NkMTk3NTNj
ZDI5NDZlMWI2MmY1NzI2YzA2ZGI0Ny4uNjFjNGZjMzM2OGM2YmUxM2EzZDhlZjY4MjhjMTIyMjFm
Zjg3ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTcz
LDYgKzE3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0
U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
aW5kZXggNmRmNWI5ODc5MmZiNTE1OWUyZThiYmRhNWFkMzBlYzE4ZTI5Mzc3Yy4uNjQxN2Q2ZGM1
NDliNDFlYmU2NDg3MTQ0YjEyZjRiMTk0YjdjODQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKQEAgLTg1LDYgKzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09i
amVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3Q7CkBAIC0xNzgsNyArMTc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
aW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsKKyAgICAgICAgdmlz
aXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9p
ZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKKyAgICB7CisgICAgICAgIEpTQ2VsbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGNlbGwpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA0MDI2Yzk5Njc5ZmIxNTVkOTljM2QzM2QwMjVhZWM1ZjE1YzZiMzZk
Li5iYzU0N2JlMDgyNTQ3YmVhNmY0Yzc3NzA4OTUwNTY0NmNhMjQ2NTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTMzLDE0ICsxMzMsMjAg
QEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0
YXRlKiBleGVjKQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpT
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7
CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9zY29wZUNoYWluKTsKLSAgICBpZiAobV9leGVjdXRh
YmxlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9leGVjdXRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZUNoYWluKTsKKyAgICBpZiAodGhpc09iamVjdC0+
bV9leGVjdXRhYmxlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVj
dXRhYmxlKTsKIH0KIAogQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEm
IGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmlu
ZGV4IDZlNDc3MzNiY2RkOTNkNzRiZmYxMWYyYTg0MmE4M2VjOTAzOGQyNTAuLjI3MWU2MWUwYTlh
NjAxOTQ3N2VmOTE2MmY1YTZjYzFhNmZiZWY0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0
YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFy
Z3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTdmNThlNGI3ZDVkNWNjZTgyMjNiZDE5N2EwMmNlZWFh
M2Y4N2JjMC4uNzVhYmRjMzcyODU4M2E5ODA0NGMwYmQxNGYyNDZlYzQ0ZjE3NjRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MzA4LDYzICszMDgsNjkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIAogdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5T
dGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sgCisgICAg
SlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdCo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBKU1ZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotCi0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9nbG9iYWxTY29wZUNoYWluKTsKLSAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX21ldGhvZENhbGxEdW1teSk7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX3JlZ0V4cENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX2Vycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZh
bEVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmFuZ2VF
cnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZmVyZW5j
ZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3ludGF4
RXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV90eXBlRXJy
b3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKLQotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZhbEZ1bmN0aW9u
KTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxGdW5jdGlvbik7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcHBseUZ1bmN0aW9uKTsKLQotICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fb2JqZWN0UHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX2Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZt
X2FycmF5UHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Jvb2xlYW5Q
cm90b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nUHJvdG90eXBl
KTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX251bWJlclByb3RvdHlwZSk7Ci0gICAg
dmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9kYXRlUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX3JlZ0V4cFByb3RvdHlwZSk7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX2FyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9hcnJheVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9ib29s
ZWFuT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxi
YWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9kYXRlU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX251bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXJyb3JT
dHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZnVuY3Rpb25TdHJ1Y3R1
cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbmFtZWRGdW5jdGlvblN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cFN0cnVjdHVyZSk7Ci0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7Ci0K
LSAgICBpZiAobV9yZWdpc3RlckFycmF5KSB7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJp
YWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZ2xvYmFsU2NvcGVDaGFp
bik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9tZXRob2RDYWxs
RHVtbXkpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdF
eHBDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+
bV9lcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fdHlwZUVy
cm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0
aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ib29sZWFuUHJvdG90eXBlKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N0cmluZ1Byb3RvdHlwZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9udW1iZXJQcm90b3R5cGUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZGF0ZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBQcm90
b3R5cGUpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcmd1
bWVudHNTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fYXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tP
YmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fZGF0ZVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1
Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVtYmVy
T2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJnRoaXNPYmplY3QtPm1fc3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmUpOworCisgICAgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheSkgewogICAgICAgICAv
LyBPdXRzaWRlIHRoZSBleGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxl
cyBhcmUgdG9ybiBvZmYsCiAgICAgICAgIC8vIHdlIGNhbiBtYXJrIHRoZSB0b3JuLW9mZiBhcnJh
eS4KLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9yZWdpc3RlckFycmF5LmdldCgpLCBt
X3JlZ2lzdGVyQXJyYXlTaXplKTsKLSAgICB9IGVsc2UgaWYgKG1fcmVnaXN0ZXJzKSB7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheS5nZXQo
KSwgdGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5U2l6ZSk7CisgICAgfSBlbHNlIGlmICh0aGlz
T2JqZWN0LT5tX3JlZ2lzdGVycykgewogICAgICAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIGds
b2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIGluIHRoZSByZWdpc3RlciBmaWxlLAog
ICAgICAgICAvLyB0aGUgc3ltYm9sIHRhYmxlIHRlbGxzIHVzIGhvdyBtYW55IHZhcmlhYmxlcyB0
aGVyZSBhcmUsIGFuZCByZWdpc3RlcnMKICAgICAgICAgLy8gcG9pbnRzIHRvIHdoZXJlIHRoZXkg
ZW5kLCBhbmQgdGhlIHJlZ2lzdGVycyB1c2VkIGZvciBleGVjdXRpb24gYmVnaW4uCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJzIC0gc3ltYm9sVGFibGUoKS5zaXplKCks
IHN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+bV9yZWdpc3RlcnMgLSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLnNpemUoKSwg
dGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZThhMDdlNzJl
MmM2NjJkZTU3ODdlNGM3NjQ0MjdhZWI0MDVjOGU3OS4uZGEzYzkxNWE5N2UyYTA2YjcyNTI3MmRl
NmRiNDgwNWRiZjEzNWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0xNzUsNiArMTc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAwNzBhNTNlMTlm
YzllMzc1ODkzMWMxODE0MGJmMjY2Yjk1YTlkOTVhLi4xYTk4ZWFiMDdkMzIwNzkwYmI0YzUyM2Rl
ZWI5YWIzNGNmN2E3M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC03MCwxMyArNzAsMTkgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKIAogdm9p
ZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRv
ci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXND
aGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIHZp
c2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJl
bkRpcmVjdCh2aXNpdG9yKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXNpdG9yLm1faXNDaGVj
a2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDUx
MzU5MGMwYjBmMmRiZWIzMzQ5YTRiZjI4ZTJlYjkwNTBhNTllZmQuLmFhMjA4YjMyMzI1OTQ5YzJj
MGU2ZjM3MzliNDYzMGFhYTUwNTNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtODEsNiArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAgICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYpOworICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ICAgICAgICAgLy8gVGhlIGlubGluZSB2aXJ0dWFsIGRlc3RydWN0b3IgY2Fubm90IGJlIHRoZSBm
aXJzdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCiAgICAgICAgIC8vIGluIHRoZSBjbGFzcyBh
cyBpdCByZXN1bHRzIGluIHRoZSB2dGFibGUgYmVpbmcgZ2VuZXJhdGVkIGFzIGEgd2VhayBzeW1i
b2wKQEAgLTgxNiw3ICs4MTcsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOwogCiAgICAgUHJvcGVydHlTdG9y
YWdlIHN0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUg
PSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRl
eCA0YzdhNmVlOTY3NDU4ZTkxNGE0NzMwZmRlNjRhM2FhNWU0NTEwOTU3Li4xMmVkYzIyMTkxYzc4
YTg4MzNjOTAyNGM5M2I0YTY1OGFmNGMxZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtOTQsMTEg
Kzk0LDE3IEBAIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogCiB2b2lkIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdG9yLmFw
cGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplKTsKLSAgICBpZiAo
bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblN0YXRpYyhK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2Jq
ZWN0LT5tX2pzU3RyaW5ncy5nZXQoKSwgdGhpc09iamVjdC0+bV9qc1N0cmluZ3NTaXplKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBhNzE5ZGUxY2I4ZjI3MTZhNzZhMjVlNWNh
MGMyNDdlNzdhNzZhYmExLi42YTU1Njc3Mjg2ZGJkMzcxZGZiY2M4ZjY0MzY0ZGM3ZDFkNDIzMThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCA1MjA2NTEwZDZjZDJhNzcyNGE3M2I1YmVkMTJhMWYy
ZDZkOGNjNzE2Li45NmQxMzFhNDAyZjYzNmI1NjI3MTMxZmQ2MTJmYjliOTRjM2VlMDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmNwcApAQCAtMzQsMTEgKzM0LDE3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNT
dGF0aWNTY29wZU9iamVjdCk7CiAKIHZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyhK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJpYWJs
ZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdpc3RlclN0b3JlKTsKIH0KIAogSlNPYmpl
Y3QqIEpTU3RhdGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmgKaW5kZXggMWY4ZDhiOGZlZjNkOGJjM2MxZTJiNWIyMDAxNmIyYTU5ZjVjNTI2ZS4u
MGU3MjQyMDkzMjMyODFjYmUxYTA0ODBkZDQwZmY2ODFiNjAyYmVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtNDIs
NiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBib29sIGlz
RHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3Bw
CmluZGV4IDhkNjM4N2VjMGFiMjBhZGY3YWZhNTNlMWYxMGZkYWQwNDMwZjAxZTIuLjcyMGIxOTVm
NmVhNGMyNWUzMDJmNGZhN2FmNGEyZGExYWU3M2ExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcApAQCAtMjgsMTIgKzI4LDE4IEBA
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNXcmFwcGVyT2JqZWN0KTsKIAogdm9pZCBKU1dy
YXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1dyYXBwZXJPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dyYXBwZXJP
YmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1f
aW50ZXJuYWxWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJuYWxWYWx1ZSk7
CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCBjZjQ0ZTA0ZTc4NWQyNGU0OWEwYjljNTU3MmQ1ZTE1
YzJhN2I0OTM0Li5kZTFiYzFiMGRhZDllMGY2ZTRhMzJkNDhhMTAxYzU3YTQyMzA2MmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAt
NDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAg
CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggYTEwM2MzNzYxMzYyYzI1M2I2Y2UyOGRhMWYyYzAyYTYxYWY2
Y2RmNy4uMGM2NTY2MWVkYWFiNGUzMDk0MjhlMmEyZWMxM2E3YzM2NTVhMjJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTM5LDEyICszOSwxOCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cgogCiB2
b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBJbnRlcm5hbEZ1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2Vycm9yU3RydWN0dXJl
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJU
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7CisgICAgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSkKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpOwogfQog
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggY2M0NjM1
YjUwZTA4NTY5ZWUwZDk1Y2YxYTgwMDUyZGY5NzBhYzUwMS4uMjNlM2MyZjk0YjM2N2QzNTFiYTgz
MmM0MGI2MmM5MGY3ZDUyOTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9y
U3RydWN0dXJlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcAppbmRleCBiYWU5MDg2MWVhNTM1OTA2YjllYTU2NWFjN2FkMmMzNDRjMWU2
YzVmLi41MTMzYWE1NGQxNDI0MmE2M2QxODcyZWMxZGMyNmM1NjZjYmRlOWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTgwLDE0ICs4
MCwyMCBAQCBSZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3QoKQogCiB2b2lkIFJlZ0V4cE9iamVj
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWMo
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3Rh
dGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgUmVnRXhwT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0Kj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKGQtPnJlZ0V4cCkKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJmQtPnJlZ0V4cCk7Ci0gICAgaWYgKFVOTElLRUxZKCFkLT5sYXN0SW5kZXguZ2V0
KCkuaXNJbnQzMigpKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmQtPmxhc3RJbmRleCk7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+cmVnRXhwKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+cmVnRXhwKTsKKyAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QtPmQtPmxhc3RJbmRleC5nZXQoKS5pc0ludDMyKCkpKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+bGFzdEluZGV4KTsKIH0KIAogYm9vbCBSZWdFeHBPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCBjOWZiMDBiZjA5MDgzYzJlOTE1Nzg0Y2E3
M2UyNjE1YTRlNTJlNzMwLi43MGQ4YzRkZjk1ODA0YzdlNTQ3NDZkMDQ4OGQyZWVkMjFhYzgyNGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAt
ODMsNiArODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAg
ICBib29sIG1hdGNoKEV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW4uY3BwCmluZGV4IGRmNGRhNDFjMDIxMzk0MjcwNjU0YzA1MWM2ZjdjOGU1
Mjg4NWVjNjUuLmQzY2U5ZDhkODEwODAwOTk5OGRiZjU4ODFmZGZiY2YzMTg1ZTA3MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCkBAIC02OSwxNCAr
NjksMjAgQEAgaW50IFNjb3BlQ2hhaW5Ob2RlOjpsb2NhbERlcHRoKCkKIAogdm9pZCBTY29wZUNo
YWluTm9kZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5T
dGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBT
Y29wZUNoYWluTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFNjb3BlQ2hhaW5Ob2RlKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIGlmIChuZXh0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbmV4dCk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJm9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbE9iamVjdCk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbFRoaXMpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIGlm
ICh0aGlzT2JqZWN0LT5uZXh0KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bmV4dCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm9iamVjdCk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPmdsb2JhbFRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBkZDUwMDRiNTAw
YTgyY2FjNGVlYWYyYmJjNTc1Yjc4ZmQ4NDdkZjRhLi4zYjJmZmY1MzNmNmE0NDlhNmNmN2I4OWI3
YzViZWRmNzlkOTZjMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oCkBAIC04OCw2ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRl
eCAzMTNhODUxODcxNGQ2YzVmYmEzNTdiOWUzOWVkM2VmNjJmYzk0YjZjLi43ZmZkMGQ3ZDNhNTc2
NWU4MWEwN2MyZGJiMjFmMGQ3YjkwZWE2YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTcyNiwyNCArNzI2LDMwIEBAIHZvaWQgU3RydWN0dXJl
OjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
QXJyYXkmIHByCiAKIHZvaWQgU3RydWN0dXJlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2ds
b2JhbE9iamVjdCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZ2xvYmFsT2JqZWN0KTsKLSAg
ICBpZiAobV9wcm90b3R5cGUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3Byb3RvdHlwZSk7
Ci0gICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKLSAgICBpZiAobV9wcmV2aW91cykKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fcHJldmlvdXMpOwotICAgIGlmIChtX3NwZWNpZmljVmFsdWVJblBy
ZXZpb3VzKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91
cyk7Ci0gICAgaWYgKG1fZW51bWVyYXRpb25DYWNoZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jm1fZW51bWVyYXRpb25DYWNoZSk7Ci0gICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgewotICAgICAg
ICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwot
ICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIHB0ciA9IG1fcHJvcGVydHlUYWJs
ZS0+YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGlj
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlblN0YXRp
YyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFN0cnVjdHVyZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCkKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9w
cm90b3R5cGUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3RvdHlw
ZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9wcmV2aW91cykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcHJldmlvdXMpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3NwZWNpZmljVmFs
dWVJblByZXZpb3VzKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZW51bWVyYXRpb25D
YWNoZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZW51bWVyYXRpb25D
YWNoZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUt
PmVuZCgpOworICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIHB0ciA9IHRoaXNP
YmplY3QtPm1fcHJvcGVydHlUYWJsZS0+YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAg
ICAgICAgICAgIGlmIChwdHItPnNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnB0ci0+c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZDYwNzM3ZTVkZmIyMzgwMDBmOGVhOWQx
ZWNjNWQwNmU4ODFkNzU0ZC4uOWYwOWE3MWJmYWE5OWQyYzI1ODVhOWNiMGViMmJjYWJjMGFmMzYz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTEzMSw2
ICsxMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JM
b29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5
cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBj
b25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVy
biBtX3ByZXZpb3VzLmdldCgpOyB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlv
bmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2UwZjAyOGViNzA3Yzdl
MTE3MTFlODBhZTg0ZjkyOTg4MzkwOGExNC4uZGFhOTBjNWI4ODdkYjZjNjc1YjJhYWQzZWMyMjE5
NmQ0MjFiYzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmNwcApAQCAtNDUsMTEgKzQ1LDE3IEBAIFN0cnVjdHVyZUNoYWluOjp+U3RydWN0
dXJlQ2hhaW4oKQogCiB2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNf
aW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30K
Kwordm9pZCBTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFN0cnVjdHVyZUNoYWluKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlQ2hhaW4qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwogICAg
IHNpemVfdCBpID0gMDsKLSAgICB3aGlsZSAobV92ZWN0b3JbaV0pCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3ZlY3RvcltpKytdKTsKKyAgICB3aGlsZSAodGhpc09iamVjdC0+bV92ZWN0b3Jb
aV0pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ZlY3RvcltpKytdKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCBjZGQ2NGVmNmE2MWFlNDE0NDAzM2IwN2ZjMWVjMTky
NzAzMWFkZDBiLi44YTgyZjI4NzliYzFkNTE5OGFiYzMwOTVmOWM4ZTUzZjFjNTk3YmY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTUz
LDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAg
ICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7
IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhNzJjNWNlZDU5ZmIzZDhh
ZjNkMmMwYzFlODQwNGM4MTMxM2YyYzhiLi43MjI3Mzc5ODNkZDk1ZTFiMGNkMTMxOGU4NzZmMjYy
NWZjNzA4NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
MS0wOS0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBq
dXN0IGV4dHJhY3QgdGhlIGJvZGllcyBvZiB0aGUgdmlydHVhbCB2aXNpdENoaWxkcmVuIG1ldGhv
ZHMKKyAgICAgICAgdGhyb3VnaG91dCB0aGUgSlNDZWxsIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBv
dXQgaW50byBzdGF0aWMgbWV0aG9kcywgd2hpY2ggYXJlIAorICAgICAgICBub3cgY2FsbGVkIGZy
b20gdGhlIHZpcnR1YWwgbWV0aG9kcy4gIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4g
dHJ5aW5nIHRvIAorICAgICAgICBtb3ZlIHRoZSB2aXJ0dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJl
biBpbnRvIG91ciBvd24gY3VzdG9tIHZ0YWJsZSBzdG9yZWQgaW4gCisgICAgICAgIENsYXNzSW5m
by4gIFdlIG5lZWQgdG8gY29udmVydCB0aGUgbWV0aG9kcyB0byBzdGF0aWMgbWV0aG9kcyBpbiBv
cmRlciB0byBiZSAKKyAgICAgICAgYWJsZSB0byBtb3JlIGVhc2lseSBzdG9yZSBhbmQgcmVmZXIg
dG8gdGhlbSBpbiBvdXIgY3VzdG9tIHZ0YWJsZSBzaW5jZSBub3JtYWwgCisgICAgICAgIG1lbWJl
ciBtZXRob2RzIHN0b3JlIHNvbWUgaW1wbGljaXQgaW5mb3JtYXRpb24gaW4gdGhlaXIgdHlwZXMs
IG1ha2luZyBpdCAKKyAgICAgICAgaW1wb3NzaWJsZSB0byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5
IGluIENsYXNzSW5mby4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAo
VXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChVc2VyT2JqZWN0SW1wOjp2
aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisKIDIwMTEt
MDktMTQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnppcCBpbml0aWFsaXphdGlvbiBsaXN0cyBhbmQgY29uc3RydWN0b3JzIGluIEpTQ2VsbCBo
aWVyYXJjaHkgKDYvNykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2Jq
ZWN0SW1wLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAppbmRl
eCBhZDM2OTNiM2FkMTMwNWUwYTljMjQ2ZWI2Yzk5ODEzMzYxZTBmNGJlLi5lNTAzNzE4YjI4NDA1
ZGNkMzBkNzM3YzFhNjRjNjY4MDE5OTNlOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvVXNlck9iamVjdEltcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuY3BwCkBAIC00MDYsNyArNDA2LDEzIEBAIFVTdHJpbmcgVXNlck9iamVjdEltcDo6
dG9TdHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25zdAogCiB2b2lkIFVzZXJPYmplY3RJbXA6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKGZKU1VzZXJPYmplY3QpCi0gICAgICAgIGZKU1Vz
ZXJPYmplY3QtPk1hcmsoKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVc2VyT2JqZWN0SW1wKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8VXNlck9iamVjdEltcCo+KGNlbGwpOworICAgIEpTT2JqZWN0Ojp2
aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5mSlNVc2VyT2JqZWN0KQorICAgICAgICB0aGlzT2JqZWN0LT5mSlNVc2VyT2JqZWN0LT5N
YXJrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdElt
cC5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCA0M2ZmMGRh
OGQ3NTZhZmU2ZmYzZDdjODYzOWE5ZDMxM2FhZDA1YmJiLi5mOTFlNjYxMGJiMmU1ZWI1Y2NhYzli
MGIyYTk1MjEwMjJiM2VhY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNl
ck9iamVjdEltcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhF
eGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNlck9iamVjdCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjEyNTUzYzQ5MmQyNjM3NDYxMmUxNmZiZjU5YTk3
ZTgyMzlhYS4uODU4ZDhhYWFmMjAxZTUwMDI5MjJkYzNhOTNiZjEwN2YwZjNjMjRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMS0wOS0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBl
eHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisg
ICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGlu
dG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRo
ZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWlu
ZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50
byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBX
ZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIg
dG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRo
ZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0
aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtp
bmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBD
bGFzc0luZm8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQXR0cjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNB
dWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OnZpc2l0
Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2
aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVz
c2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TmFtZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFw
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNp
dENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRl
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0
Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuU3RhdGlj
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHls
ZVNoZWV0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Ry
ZWVXYWxrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJl
blN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxk
cmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlblN0YXRp
Yyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hQYXRoUmVzdWx0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYnJpZGdl
L3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVP
YmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRob2Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhv
ZDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUu
aDoKKwogMjAxMS0wOS0yMCAgQWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXdvcmsgc2NyaXB0IGNvbnRleHQgY3JlYXRpb24vcmVsZWFzZSBub3RpZmljYXRpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0NDlh
NWNlMTI3NzlmZDY4NjMwZTM2ZTMwNWMwY2MxODkxZmJhNzFmLi42MWY5OGI1NGQxOTI4NGRjYTUw
MTlhODUzMGQyZGU5ZmFmMmJmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXR0ckN1c3RvbS5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiB2b2lkIEpTQXR0cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZp
c2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBdHRyOjp2aXNp
dENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdHRyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBdHRyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBpbXBsKCktPm93bmVyRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGVsZW1lbnQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cAppbmRleCBjOGUxZWNlODFlZWQyMTRiZDQyZWNhYzVkNDBkMzlkZGJhZWYzNDg3Li5jYTEzOTgy
NDUyNzhhMDFlN2MzNWNhZmE4ODYyZDMzZGVlMzIwMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC00MSwxMSArNDEs
MTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXVkaW9Db250ZXh0Ojp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9Db250ZXh0KiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBdWRpb0NvbnRleHQqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLSAgICBtX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
QXVkaW9Db250ZXh0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVs
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwCmluZGV4IDE1NWJhNmUzY2M1MTVkNGVkOTVlYTE5ZmI0NDI5MzRkZTAyMjVjMDUuLjk2YjBh
Y2YyNDkwZmI4NTQzZTUwNjg5MzM2MThjZGJhZjVkOGRmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcApAQCAtNTAsMTEgKzUwLDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAm
c19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQ1NTUnVsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTQ1NTUnVsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENT
U1J1bGUqIHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA0NjVlNzgzNGE1ZDYwZWM2MmEw
ZmE0YThkOGVjZTQ0MmJmYWQyZTE0Li5lNDZhODEzMzU0YmI4ODllMTEyNjkwYjAwMTA1ZGQ1Mzk2
M2Y5MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTQ1LDExICs0NSwxNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NTU1N0eWxlRGVjbGFy
YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJv
b3Qocm9vdChpbXBsKCkpKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwogfQogCiAvLyBDaGVjayBmb3IgYSBDU1MgcHJl
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYWQ2NDZhMDUzMjgyNzI1YmEwOTJj
NTgyMzIxNmY3ZjA1ZDlmYzQ2MS4uNWJjNDA2NjdhZGE4OTllMWIzNTg0OWUwMTE1ZmU1NGI3OTUx
M2Q1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00MSwxMiArNDEsMTggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVu
U3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y2FudmFzKCkp
KTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCktPmNh
bnZhcygpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBv
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKaW5kZXggNzFkOThjOTFhNTdkN2I2MTMzMTdkYTZhN2I0ODEyNTQ3MDUxNDIwYy4uYjNm
NGEzNmVlMDU1M2M5MmVhYTZkZTU4NjVjMDQyZjFjMWY3NTVkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTUsMjMgKzU1LDI5
IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIHRoaXNWCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKIH0KIAotdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9
CisKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7Ci0gICAgZm9yIChKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmVzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3Ig
aXQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnNlY29uZCk7CiAKLSAgICBKU0RPTUNvbnN0cnVj
dG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3RydWN0b3JzKCkuZW5kKCk7Ci0gICAgZm9yIChK
U0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdDIgPSBjb25zdHJ1Y3RvcnMoKS5iZWdpbigp
OyBpdDIgIT0gZW5kMjsgKytpdDIpCisgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3Ig
ZW5kMiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmVuZCgpOworICAgIGZvciAoSlNET01D
b25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCku
YmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQy
LT5zZWNvbmQpOwogCi0gICAgaWYgKG1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmplY3Rl
ZFNjcmlwdCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5qZWN0ZWRT
Y3JpcHQpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRDdXJyZW50RXZlbnQoRXZl
bnQqIGN1cnJlbnRFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCmluZGV4IDkwMDI4MzA4MzRlMGYzMGIxYmUwZDQyZjgxNmI5MmU5MzEyNTk0
YzAuLjdmNGVmNjJjYTQ5M2I3Y2M5NGY2NTE1OGY0OGVlZDc0YzEwODhhMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtNjUsNiArNjUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTT2JqZWN0KiBpbmplY3RlZFNjcmlw
dCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0M6
OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBET01XcmFwcGVyV29ybGQq
IHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggY2I0MWRiY2UxZWNjODhj
YTE0ZWRjNWI1MzNhNjgwNDIyM2Q2YzVkNy4uYTdlMjBlMjUxZWExNjBjMTg5NTBlMTBhYzE2MWQy
ZDMwZTE1MTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtNzksMTMgKzc5LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0
Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3c6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlt
cGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwotICAgIGlmIChGcmFtZSogZnJh
bWUgPSBpbXBsKCktPmZyYW1lKCkpCisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3Qt
PmltcGwoKS0+ZnJhbWUoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZyYW1lKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNw
cAppbmRleCAxNTg4ZDRmZWQwMjFlZTZjYzY2ZmY1MzliOGYwMDQ2YTNlYmQ5NGE3Li4wMWFkMmU5
MjEyNGI1MTJjZWJiN2RlZWM5NzQ4M2IyYjEzYmExNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtODMsMTQgKzgzLDIwIEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiAvLyBKU09iamVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLXZvaWQgSlNET01XaW5kb3dT
aGVsbDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNET01XaW5k
b3dTaGVsbDo6dmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjp2
aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2lu
ZG93U2hlbGwqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV93
aW5kb3cpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3dpbmRvdyk7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICBpZiAodGhpc09iamVjdC0+bV93aW5kb3cpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3dpbmRvdyk7CiB9CiAKIFVTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xh
c3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAppbmRleCBmZThhNGZkZTA5MTYyMzFmZDM3ZDYzZmNhMTQ4ZDM4N2JjZGUzODg1Li5m
NDE4ZTczNmI0OTBhOTg5YjQxNTRiNTQ0MzhkYTNhMzgxNDU4ZjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC03OCw2ICs3OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6
OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMo
SlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpV
U3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20u
Y3BwCmluZGV4IGViYzIzYjM2Y2QzZTQ3NTQ2MzdlNDIzZTdiNmNlNmEwMjQ5NzEwM2YuLmVmMDk1
MGVkZjkwYTA0Njg5YWZmZjgzMmE5YjVlMjcwZjE3MjE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNw
cApAQCAtMzYsMTEgKzM2LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0phdmFT
Y3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENo
aWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwotICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPihpbXBsKCkpLT52aXNp
dEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBzdGF0aWNfY2Fz
dDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4odGhpc09iamVjdC0+aW1wbCgpKS0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
CmluZGV4IDM0ZjU5MzEzMzVmZDdhOGJlNzMzMmFmNGJjOTRjYzc2OWFkMDJjY2QuLmFiYWY2OGMx
NTkzOTc2ZjA3ZTVmZDg0MzU4ZWRmYjJmNzVjZTJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0zMiwxOCAr
MzIsMjQgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKKwogdm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU01l
c3NhZ2VDaGFubmVsOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNNZXNzYWdlQ2hhbm5lbCogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PEpTTWVzc2FnZUNoYW5uZWwqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5w
b3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+
cG9ydDEoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogCi0gICAgaWYg
KE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9y
dCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+cG9ydDIoKSkKICAgICAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDhhZGY0YTdiYjM4ZWRhMGU0NmI0MDQ0
NGY0YWQzOGZiNWNiZjFhMTIuLjI0NWM3NWYwN2ViZDczZThlNzUyNTg4ZDhjODM5YTk4MDFhYzI2
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCkBAIC00NCwxNiArNDQsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEpTTWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENo
aWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTWVzc2FnZVBvcnQ6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU01lc3NhZ2VQb3J0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNNZXNzYWdlUG9y
dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgbG9jYWxseSBlbnRhbmdsZWQgcG9ydCwgd2UgY2FuIGRpcmVjdGx5
IG1hcmsgaXQgYXMgcmVhY2hhYmxlLiBQb3J0cyB0aGF0IGFyZSByZW1vdGVseSBlbnRhbmdsZWQg
YXJlIG1hcmtlZCBpbi11c2UgYnkgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCkuCi0gICAg
aWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpKQor
ICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+bG9jYWxseUVu
dGFuZ2xlZFBvcnQoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogCi0g
ICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cAppbmRleCA0N2Y1NmEyOWVmNDRhY2MwMTBmNTc0OTI4NzFjNmEwY2FlZDcwODhkLi4zODc3ZWRk
ZjMwNGU4Y2MzZjViNDFjOTU2MWRiMjgyY2JmOTU0MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNSw2ICszNSwx
MSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQg
SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwogYm9vbCBKU05hbWVk
Tm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1w
bCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBpbXBsLT5n
ZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAtNDYsMTgg
KzUxLDE5IEBAIEpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVuCiAgICAgcmV0dXJuIHRvSlMoZXhlYywg
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlk
ZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLXZvaWQgSlNOYW1lZE5vZGVN
YXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTmFtZWROb2Rl
TWFwOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICBKU05hbWVkTm9kZU1hcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFw
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAg
IC8vIFdlIG5lZWQgdG8ga2VlcCB0aGUgd3JhcHBlciBmb3Igb3VyIHVuZGVybHlpbmcgTmFtZWRO
b2RlTWFwJ3MgZWxlbWVudAogICAgIC8vIGFsaXZlIGJlY2F1c2UgTmFtZWROb2RlTWFwIGFuZCBB
dHRyIHJlbHkgb24gdGhlIGVsZW1lbnQgZm9yIGRhdGEsIGFuZAogICAgIC8vIGRvbid0IGtub3cg
aG93IHRvIGtlZXAgaXQgYWxpdmUgY29ycmVjdGx5LgogICAgIC8vIEZJWE1FOiBGaXggdGhpcyBs
aWZldGltZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCi0gICAgRWxlbWVudCog
ZWxlbWVudCA9IGltcGwoKS0+ZWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPmVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA1MWUzYmI4NmFhZWUz
MmI1ZjIxNjU5YmUxMzdjODJhNDQzMmZkZjExLi45YWQ3ODVjM2VlZTU3ZDlhYjhiOGYwYTAzNDNk
MmE1OWZlMDNhZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKQEAgLTE5NCwxMiArMTk0LDE4IEBAIFNjb3BlQ2hhaW5Ob2RlKiBKU05vZGU6OnB1c2hF
dmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSogbm9kZSkKIAogdm9p
ZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVu
U3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTm9kZTo6dmlzaXRDaGlsZHJlblN0
YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9kZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0
aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBOb2RlKiBub2RlID0gbV9pbXBsLmdldCgp
OworICAgIE5vZGUqIG5vZGUgPSB0aGlzT2JqZWN0LT5tX2ltcGwuZ2V0KCk7CiAgICAgbm9kZS0+
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3Qobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggYzE1MWM1NGM0YTAyYTk0ZjViMjJkNDNhYTY2YTJlNDE4
ZmUzMjE0MS4uMDVlYWY2ZGE5MDE1ZjhiMzlkOGE1MDkyODM5YWEyYjA2M2NjOWNmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBA
IC0zOCwxMSArMzgsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUZpbHRl
cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWMo
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuU3Rh
dGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2RlRmls
dGVyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNOb2RlRmlsdGVyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKSk7
CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+aW1w
bCgpKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmluZGV4IDAyZDEwOGQyNGY1ZGZh
YWUwOTNhMWRlY2NhNWIyNzZjNzEzODhiMGEuLjM0MDkxYTU1ZGQ3ZjIxMTYyNDc4MjY3NTk1YmUy
NTE3ODk3MmYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTMxLDEyICszMSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTm9k
ZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNOb2RlSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU05vZGVJdGVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gbV9pbXBsLT5maWx0ZXIo
KSkKKyAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5maWx0
ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRlcik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNl
Q3VzdG9tLmNwcAppbmRleCBkZDIwZmJhMGI3ODNkMDEzZjQyNGI1NzUyZTVjYTdlODkwMTE3YTM0
Li42Y2JiMzM4MjhlOWU3YTg1ZmY2ZmExNGNlMDc5NTA5NmY4MWYyZjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0
b20uY3BwCkBAIC0zNywxMSArMzcsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpT
U1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU1ZHRWxl
bWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU1ZHRWxlbWVudEluc3RhbmNlKiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTVkdFbGVtZW50SW5zdGFuY2UqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KGltcGwoKS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAppbmRleCAzZTM3
OTY5MzdjZGVhOGZlNWQ0YzZhYjA3ZjI0ZGYyZWE5ZWVmNGRjLi5lOWMwZTg5ZmU2YjJjZmY5ZDQ3
MjQ1ZGU2MGYzODhhZTY5NTE4ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC00NSwxMiArNDUsMTggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywg
JnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU2hhcmVkV29ya2VyKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3JrZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgp
LT5wb3J0KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09iamVjdC0+aW1wbCgp
LT5wb3J0KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKaW5k
ZXggMjFlMDBiMTY4YzIyNTQxMTgxMTRkMmE0OTFlMWU0ZTIwNTExYzZlNi4uNGQ1NTA4MDc2OWQ4
OTdkOGU2YTI2MzFiZGM4NDZjMWI2MjcyZDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCkBAIC0zNywxMSArMzcsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisK
K3ZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTdHlsZVNoZWV0KiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNTdHlsZVNoZWV0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVG
bGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRo
b3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpKTsKIH0K
IAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCmluZGV4IGRmZjM0NjljZTI5ODA3NDZh
NTIzMWU1ZDEzNjM5NzQ1MGJmYzI2NWMuLjNiMzVmMGU2ZjlhNDgwNmNmNzIzNWY5YTU0NGE3NTVl
YWU0OGI5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdh
bGtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fs
a2VyQ3VzdG9tLmNwcApAQCAtMjgsMTUgKzI4LDIxIEBACiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIHZvaWQgSlNUcmVlV2Fsa2VyOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1RyZWVXYWxrZXIqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU1RyZWVXYWxrZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3Rh
dGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9
IG1faW1wbC0+ZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IHRoaXNPYmpl
Y3QtPm1faW1wbC0+ZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggNTliNjM5MjAyZWRlMjYyYWE0
MTNlODZmYjAwOTk0NzQ5OTJjNjFmZS4uNjFiNjg5NTNjOGVlNTIxZDlmYjk3Y2Y5NGY5NWYwNjJh
YjcyZGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTk0LDExICsxOTQsMTcgQEAg
c3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KIAogdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+aW1wbCgpKTsKIH0KIAogSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwCmluZGV4IDg4N2EzYmMwNDVlOWJkNzFiN2Q0ZjJiNmYxOTljMzFkNjdlZDcwNmIuLmJiMTgz
ZTBlZDNlNDU4YjAzMzIzNTE1MmJiYzY2NDQzMTZkOWNkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNTUsMTcg
KzU1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dvcmtlckNvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRp
YyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTV29ya2VyQ29u
dGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoV29ya2Vy
TG9jYXRpb24qIGxvY2F0aW9uID0gaW1wbCgpLT5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYg
KFdvcmtlckxvY2F0aW9uKiBsb2NhdGlvbiA9IHRoaXNPYmplY3QtPmltcGwoKS0+b3B0aW9uYWxM
b2NhdGlvbigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobG9jYXRpb24pOwotICAg
IGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IGltcGwoKS0+b3B0aW9uYWxOYXZpZ2F0
b3IoKSkKKyAgICBpZiAoV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPm9wdGlvbmFsTmF2aWdhdG9yKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChuYXZpZ2F0b3IpOwogCi0gICAgaW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CiB9CiAKIGJvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyNTc1NzU2NjY2ZGZlNjBlN2EzZDI0ZGE3YTA5
MWVhMDMzYjkxYmQyLi4wNDdhY2E1YjQxNTkxMjUwN2I0MWMwZTM3MzM0YzU3MmIzY2Q0YTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcApAQCAtNTYsMjYgKzU2LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9p
ZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hNTEh0dHBSZXF1
ZXN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNYTUxIdHRwUmVxdWVzdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
WE1MSHR0cFJlcXVlc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSBtX2ltcGwt
Pm9wdGlvbmFsVXBsb2FkKCkpCisgICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQg
PSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkpCiAgICAgICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdCh1cGxvYWQpOwogCi0gICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3Vt
ZW50ID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiBy
ZXNwb25zZURvY3VtZW50ID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1M
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZURvY3VtZW50KTsKIAot
ICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IG1faW1wbC0+b3B0aW9u
YWxSZXNwb25zZUFycmF5QnVmZmVyKCkpCisgICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFy
cmF5QnVmZmVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZm
ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIp
OwogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQotICAgIGlmIChCbG9iKiByZXNwb25z
ZUJsb2IgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VCbG9iKCkpCisgICAgaWYgKEJsb2IqIHJl
c3BvbnNlQmxvYiA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkK
ICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiAjZW5kaWYKIAot
ICAgIG1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmpl
Y3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiAvLyBDdXN0
b20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQ
YXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhS
ZXN1bHRDdXN0b20uY3BwCmluZGV4IDM1NDg5ZGM0N2E4ZTAxNGVmMjQyNjIzNjQxY2ExZWE3YWE0
NzQyZjQuLjQyNjAzMjIzMzQ4YjBhZWJjYTU4ODY4YTAwOWI3Nzc2NmJlMTFlZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBA
IC0zOSwxMiArMzksMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTWFBhdGhSZXN1
bHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGlj
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5T
dGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hQYXRo
UmVzdWx0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNYUGF0aFJlc3VsdCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBjb25zdCBYUGF0
aDo6VmFsdWUmIHhwYXRoVmFsdWUgPSBpbXBsKCktPnZhbHVlKCk7CisgICAgY29uc3QgWFBhdGg6
OlZhbHVlJiB4cGF0aFZhbHVlID0gdGhpc09iamVjdC0+aW1wbCgpLT52YWx1ZSgpOwogICAgIGlm
ICh4cGF0aFZhbHVlLmlzTm9kZVNldCgpKSB7CiAgICAgICAgIGNvbnN0IFhQYXRoOjpOb2RlU2V0
JiBub2Rlc1RvTWFyayA9IHhwYXRoVmFsdWUudG9Ob2RlU2V0KCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbm9kZXNUb01hcmsuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMDk1Mjhk
NTZiYzU5OTU5NjdkYjFhNDc2MWQwNWI4YWFiN2VmZmU5Yi4uMWIwZWVkZmQ1YTU3MDY3YjMyZjk4
NGQxN2FhZjFkNDUyNzljYzA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTg3Nyw3ICs4NzcsOCBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKIAogICAgICMgdmlzaXQgZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzTWFya0NoaWxk
cmVuKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYpO1xuXG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNp
dG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTtcblxuIik7
CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuIn0g
PSAxOwogICAgIH0KIApAQCAtMjIwMiwxOSArMjIwMywyNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuICYmICEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21NYXJrRnVuY3Rpb24ifSkgewogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlblN0YXRpYyhK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8JHtjbGFzc05hbWV9Kj4o
Y2VsbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6
dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0pIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsKCktPnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJG51bUNhY2hlZEF0
dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmF0
dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAobV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lIC4gIilcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKHRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAu
ICIpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2Uu
Y3BwCmluZGV4IDRiYmU2NWUwMTEzZGJmYzk4NGQ3YTU0NjQ0N2RkZTY1YzA5OTI2YWEuLmMyMzAw
MWNhMGFjYzkyYTg0N2JlMTI1OTM4MTRjZmFiYjlmZDViZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X2luc3RhbmNlLmNwcApAQCAtNjQsOCArNjQsMTQgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewot
ICAgICAgICBSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgICAgICBR
dEluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihnZXRJbnRlcm5h
bEluc3RhbmNlKCkpOworICAgICAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3Ip
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIFF0UnVudGltZU9iamVj
dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFF0UnVudGltZU9iamVjdCo+KGNlbGwpOworICAg
ICAgICBSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworICAgICAgICBRdEluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFF0SW5zdGFu
Y2UqPih0aGlzT2JqZWN0LT5nZXRJbnRlcm5hbEluc3RhbmNlKCkpOwogICAgICAgICBpZiAoaW5z
dGFuY2UpCiAgICAgICAgICAgICBpbnN0YW5jZS0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDczZGQyYmY1
NjJlZWYxMmYyMjFjNjYzMjYwODk3OTgzMzY4MjhiZjAuLmE2YTA5ZjU0NDA3NjdmZWRhYWQzMmZk
ZTM5MTllMTQ1OTBmOGE1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5j
cHAKQEAgLTE0NDEsOCArMTQ0MSwxNCBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbgogCiB2b2lk
IFF0UnVudGltZU1ldGFNZXRob2Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgUXRSdW50aW1lTWV0aG9kOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIFFX
X0QoUXRSdW50aW1lTWV0YU1ldGhvZCk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2
aXNpdG9yKTsKK30KKwordm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuU3Rh
dGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgUXRSdW50aW1l
TWV0YU1ldGhvZCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFF0UnVudGltZU1ldGFNZXRob2Qq
PihjZWxsKTsKKyAgICBRdFJ1bnRpbWVNZXRob2Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09i
amVjdCwgdmlzaXRvcik7CisgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGQgPSB0aGlzT2Jq
ZWN0LT5kX2Z1bmMoKTsKICAgICBpZiAoZC0+bV9jb25uZWN0KQogICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmZC0+bV9jb25uZWN0KTsKICAgICBpZiAoZC0+bV9kaXNjb25uZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggOTA2ZDEwOGUxZTc2OWIyNTc2YWJlM2RkMTA2
ZDc0MzViOGJmMjg3MC4uOTFhZmFlNWE3ODA3MDMwMzQyZTY5OTI1YTRhNWQxNmY0MDk1Y2EyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xNjksNiArMTY5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGRf
ZnVuYygpIGNvbnN0IHtyZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9k
RGF0YSo+KGRfcHRyKTt9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108074</attachid>
            <date>2011-09-20 16:16:20 -0700</date>
            <delta_ts>2011-09-21 11:35:13 -0700</delta_ts>
            <desc>Resetting bindings</desc>
            <filename>bug-68404-20110920161620.patch</filename>
            <type>text/plain</type>
            <size>104324</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZk
ODEwNTk2My4uOWRhZTE3Y2I1ZTJjZTM2MmNmN2UxNTdjNjc0ZTIwZWQxZWI3OWE2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5OCwxMSAr
MTk4LDE3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoKHN0YXRpY19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c19pbmZvKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAg
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlz
T2JqZWN0KSksICZKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQ
YXJlbnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxs
YmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5QYXJlbnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEt
PnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTE5OGUyOTIzZWQwMGQ5YWYyMTZkYmFm
ZjcxZWMyYzE0MTIxNTVlMy4uZWZlNjM5ZmRkMDFlYWM1MWQyZTcyNjU1MDE0Y2I4YzExMTA3OTU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDExLTA5LTIw
ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0
cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAg
ICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwgaW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRv
IHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUgCisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUg
dmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcg
dG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8g
b3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3JlZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2Ug
bmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2RzIHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRv
IGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUgZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVt
IGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNlIG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhv
ZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZvcm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5n
IGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRvIHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xh
c3NJbmZvLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNr
LmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjpTbG90VmlzaXRvcjo6ZHJhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1l
L0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OkV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RXZh
bEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAoSlNDOjpQcm9ncmFt
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2
aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNl
dHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRD
aGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlv
bjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGls
ZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29w
ZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVu
U3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTV3JhcHBl
ck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6
dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9T
Y29wZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6
CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKwogMjAxMS0wOS0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIEhlYXAgYWxsb2NhdGlvbiBsb2dpYyBp
bnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNTI4YTUxNDhjZjU3NGU0YmVkYWJlYzVjMjNlMzg2MjVm
MTcyMDkzYi4uM2E2NTMyYjQzMDBiZDk0YzQ4YWVkZmQ2MzVmMmRkMzlmYTkyOTA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNjcsNiArMTY3LDcgQEAg
X19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9y
RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZhZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9i
YWxQcm9wZXJ0eUluZm9FaQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmli
dXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVqCiBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzE0SlNHbG9iYWxP
YmplY3QxOXZpc2l0Q2hpbGRyZW5TdGF0aWNFUE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0b3JF
CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBf
X1pOM0pTQzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUgIAogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0NGluaXRFUE5TXzhKU09iamVjdEUKQEAgLTMyNCw2ICszMjUsNyBAQCBfX1pOM0pT
QzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVl
RWoKIF9fWk4zSlNDOEpTT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVF
alJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpTT2JqZWN0MThnZXRQcmltaXRpdmVOdW1i
ZXJFUE5TXzlFeGVjU3RhdGVFUmRSTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzhKU09iamVjdDE5Z2V0
T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVO
U18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDOEpTT2JqZWN0MTl2aXNpdENoaWxkcmVuU3Rh
dGljRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M4SlNPYmplY3QyMWdl
dFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNf
MThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhKU09iamVjdDIyZmlsbEdldHRlclByb3Bl
cnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5TXzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5r
bm93bkVFRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlRVJOU18x
MkpTR2xvYmFsRGF0YUVtbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCBhZjZhNTZmOWJlMmE2MDQ3ODJjODUwYzMx
ZWY1OWQyZjQwY2RmNTBjLi5lOTc4YzA5YTdjZGI5MTczNDFkNWViNmRhYzU4MTNlOTEwMGI3ZGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcApAQCAtNDUsMTMgKzQ1LDE5IEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9u
OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBhY3Rp
CiAKIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAobV9hY3RpdmF0aW9uKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9hY3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9h
Y3RpdmF0aW9uKTsKIH0KIAogVVN0cmluZyBEZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNzTmFtZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmgKaW5kZXggY2NkYmRlOGY2Y2I0MGFiNzE5ZDU0ODZhMGE0ODU0ZTcwOGZhOWY3
Mi4uNjEzYjg4NTExZTljYzc1M2IwZTkzM2Q3ZmYyOWZkNTk0NDY3MTVkNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAt
NDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IGZkNjY4YmQ5
ZWRiNjk4MTFjYmEzOTdlYTc4ZGNiNzEyOTVkYzUyOWQuLmY5NjZmNmYzMjU3YjIwNjZmNTM5Zjhj
ZDczMWZjOWNhNmRhZmM1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwpCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwog
ICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5
cGUpIHsKLSAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAg
ICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKGNlbGwsICp0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWlu
KCkKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgICAgICAgICAgICAgIG1f
dmlzaXRlZFR5cGVDb3VudHMuY291bnQoY2VsbCk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBj
ZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOworICAgICAgICAgICAgICAgIEpTQ2Vs
bDo6dmlzaXRDaGlsZHJlblN0YXRpYyhjZWxsLCAqdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbWFya1Nl
dHMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IGVjNmNjOGYxYzcyMDdk
YTgzYWYxNTE0MjZiOWY1ODFiMTk4NDZjNDkuLmJiMWI1YjdhMWQyZmRlZjUzMDdlYzkwOWNiZGZk
YjY3MGM5YzkxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcApAQCAtNDUsMjMgKzQ1LDI5IEBAIEFyZ3VtZW50czo6fkFyZ3VtZW50cygpCiAKIHZvaWQg
QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
blN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBBcmd1
bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoZC0+
cmVnaXN0ZXJBcnJheSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoZC0+cmVnaXN0ZXJB
cnJheS5nZXQoKSwgZC0+bnVtUGFyYW1ldGVycyk7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJl
Z2lzdGVyQXJyYXkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmQt
PnJlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPmQtPm51bVBhcmFtZXRlcnMpOwogCi0g
ICAgaWYgKGQtPmV4dHJhQXJndW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bUV4dHJhQXJn
dW1lbnRzID0gZC0+bnVtQXJndW1lbnRzIC0gZC0+bnVtUGFyYW1ldGVyczsKLSAgICAgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXMoZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4dHJhQXJndW1lbnRzKTsK
KyAgICBpZiAodGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVudHMpIHsKKyAgICAgICAgdW5zaWdu
ZWQgbnVtRXh0cmFBcmd1bWVudHMgPSB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgLSB0aGlz
T2JqZWN0LT5kLT5udW1QYXJhbWV0ZXJzOworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT5kLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0cmFBcmd1bWVudHMpOwogICAgIH0K
IAotICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5kLT5jYWxsZWUpOwogCi0gICAgaWYgKGQtPmFjdGl2YXRpb24pCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZkLT5hY3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+
YWN0aXZhdGlvbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmFjdGl2
YXRpb24pOwogfQogCiB2b2lkIEFyZ3VtZW50czo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0ZSog
ZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggNTYxMTNkZmE2MWQwOTIyNWQxY2JjMTlj
MzljZjMyYTE0MzIzYjY3Mi4uY2UyMjRlMTljZTAyODdkM2RhOWEwOTU0OGY3ZWExNjZiZmQ5Y2M3
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTkxLDYg
KzkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgICAgICB2b2lkIGZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSosIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKaW5kZXggYWY0ZDJjOTRhNTdkMTM0ZTEwMWIxMGI2YWM3YjAyNGEyNjdkMmU4
ZC4uNDllMTQ0M2IxNjE5YzhkNGNmYzVjYmYzMWU4YjIxOWFlOGFkMDdlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIxMywxMiArMjEzLDE4
IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlCiAKIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgRXZhbEV4ZWN1dGFibGUq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2V2YWxDb2RlQmxvY2sp
Ci0gICAgICAgIG1fZXZhbENvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2Nr
KQorICAgICAgICB0aGlzT2JqZWN0LT5tX2V2YWxDb2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOwogfQogCiB2b2lkIEV2YWxFeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCkBAIC0zNDIs
MTIgKzM0OCwxOCBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCiAKIHZv
aWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2
aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFByb2dyYW1FeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxh
Z3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91
dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwotICAgIGlmIChtX3Byb2dyYW1Db2RlQmxvY2spCi0gICAgICAgIG1fcHJvZ3Jh
bUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0
aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwog
fQogCiB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQpAQCAtNTM1LDE2ICs1NDcs
MjIgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdElu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKIAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRo
aXMsIHZpc2l0b3IpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
blN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlm
IChtX25hbWVWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fbmFtZVZhbHVlKTsKLSAg
ICBpZiAobV9jb2RlQmxvY2tGb3JDYWxsKQotICAgICAgICBtX2NvZGVCbG9ja0ZvckNhbGwtPnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIGlmIChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkK
LSAgICAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3Ip
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5T
dGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fbmFtZVZh
bHVlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lVmFsdWUpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwpCisgICAgICAgIHRoaXNPYmpl
Y3QtPm1fY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgaWYg
KHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQorICAgICAgICB0aGlzT2JqZWN0
LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAK
IHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpkaXNjYXJkQ29kZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMDc2NzZhZTY2YTk0Y2JmNzJmMTU2OGU2
MmNhZmMxNDc1OThiZTA4OC4uNGZhZDM2MzNkNTFhNzRlODFiYTYxMjViZWUwN2E3MTk0ZmI2NjVk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzYz
LDYgKzM2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRUeXBlKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogICAgICAgICB2b2lkIHVubGlua0NhbGxzKCk7CiAKICAgICAgICAgT3duUHRyPEV2YWxDb2Rl
QmxvY2s+IG1fZXZhbENvZGVCbG9jazsKQEAgLTQyNCw2ICs0MjUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCB1bmxpbmtDYWxs
cygpOwogCiAgICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxv
Y2s7CkBAIC01NjMsNiArNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBk
aXNjYXJkQ29kZSgpOwogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA5OTAyYjc2OGYyNjg2Njli
ODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li44NWRmOGM1YjQ2NTczMTc0MThlZWZjYzA1NzRlNGUz
NWQyNGRmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAKQEAgLTMyLDE0ICszMiwyMCBAQCBjb25zdCBDbGFzc0luZm8gR2V0dGVyU2V0dGVy
OjpzX2luZm8gPSB7ICJHZXR0ZXJTZXR0ZXIiLCAwLCAwLCAwIH07CiAKIHZvaWQgR2V0dGVyU2V0
dGVyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNDZWxsOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOwotCi0gICAgaWYgKG1fZ2V0dGVyKQotICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9nZXR0ZXIpOwotICAgIGlmIChtX3NldHRlcikKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fc2V0dGVyKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdldHRlclNldHRlciogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEdldHRlclNldHRlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
SlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
aWYgKHRoaXNPYmplY3QtPm1fZ2V0dGVyKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9nZXR0ZXIpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3NldHRlcikKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2V0dGVyKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmlu
ZGV4IDE5Y2RiZGRiMDEyYWEyNDk1YTY0MmRiMGYwMjQ4ZTcyNmJiNTE4ZmYuLmQyMTA1MDQ5NDJi
ZjQ0MTRmNjNiMzdkNTNhODc4MzE5MDFhZTQ2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2dldHRlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERh
dGEsIHRoaXMsIGdldHRlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwCmluZGV4IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVkNTQ5NzFjOGZi
ZDg4NWUuLjVhZGIwODIxNjA0YzJmYTYwZDBhMGI0NjI0ZDVkNTQ1NWEzNjhhNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNjUsMjAg
KzY1LDI2IEBAIEpTQWN0aXZhdGlvbjo6fkpTQWN0aXZhdGlvbigpCiAKIHZvaWQgSlNBY3RpdmF0
aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRp
Yyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5T
dGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FjdGl2
YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gTm8gbmVlZCB0
byBtYXJrIG91ciByZWdpc3RlcnMgaWYgdGhleSdyZSBzdGlsbCBpbiB0aGUgUmVnaXN0ZXJGaWxl
LgotICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IG1fcmVnaXN0ZXJB
cnJheS5nZXQoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyQXJyYXkgPSB0
aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7CiAgICAgaWYgKCFyZWdpc3RlckFycmF5
KQogICAgICAgICByZXR1cm47CiAKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFy
cmF5LCBtX251bVBhcmFtZXRlcnNNaW51c1RoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHJlZ2lzdGVyQXJyYXksIHRoaXNPYmplY3QtPm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyk7CiAK
ICAgICAvLyBTa2lwIHRoZSBjYWxsIGZyYW1lLCB3aGljaCBzaXRzIGJldHdlZW4gdGhlIHBhcmFt
ZXRlcnMgYW5kIHZhcnMuCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSAr
IG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSwgbV9udW1DYXB0dXJlZFZhcnMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXkgKyB0aGlzT2JqZWN0LT5tX251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUsIHRoaXNPYmplY3QtPm1fbnVtQ2FwdHVyZWRWYXJz
KTsKIH0KIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggZDg2MzU5M2IzMmIxODA0
YjYxNmU3YmE1YmM4YmYxY2M1YTZhNWY5YS4uMDJmODJhNzJjZTk4NzI4ZGJjZDgzOTljMzYwNGRi
NjUxY2Q0MTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwg
fkpTQWN0aXZhdGlvbigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2Nv
cGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA0YjBjYWEyMjE2ODJmNmM2OGE2MDVlOGFm
OWU1NDA2NjU4YzAzMmNhLi5jOTAxZjVjYTI2NTRlZGFjYmE5ODg2MTk2ZDU5NDQxZmUzNzBjOGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtODczLDEw
ICs4NzMsMTYgQEAgdm9pZCBKU0FycmF5Ojp1bnNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjLCBp
bnQgY291bnQpCiAKIHZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBcnJh
eTo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0FycmF5Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgdGhp
c09iamVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKIH0KIAogc3RhdGljIGludCBj
b21wYXJlTnVtYmVyc0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggNTY2MjIyNWU1N2NkMTk3NTNj
ZDI5NDZlMWI2MmY1NzI2YzA2ZGI0Ny4uNjFjNGZjMzM2OGM2YmUxM2EzZDhlZjY4MjhjMTIyMjFm
Zjg3ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTcz
LDYgKzE3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0
U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
aW5kZXggNmRmNWI5ODc5MmZiNTE1OWUyZThiYmRhNWFkMzBlYzE4ZTI5Mzc3Yy4uNjQxN2Q2ZGM1
NDliNDFlYmU2NDg3MTQ0YjEyZjRiMTk0YjdjODQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKQEAgLTg1LDYgKzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09i
amVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3Q7CkBAIC0xNzgsNyArMTc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
aW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsKKyAgICAgICAgdmlz
aXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9p
ZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKKyAgICB7CisgICAgICAgIEpTQ2VsbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGNlbGwpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA0MDI2Yzk5Njc5ZmIxNTVkOTljM2QzM2QwMjVhZWM1ZjE1YzZiMzZk
Li5iYzU0N2JlMDgyNTQ3YmVhNmY0Yzc3NzA4OTUwNTY0NmNhMjQ2NTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTMzLDE0ICsxMzMsMjAg
QEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0
YXRlKiBleGVjKQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpT
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7
CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9zY29wZUNoYWluKTsKLSAgICBpZiAobV9leGVjdXRh
YmxlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9leGVjdXRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZUNoYWluKTsKKyAgICBpZiAodGhpc09iamVjdC0+
bV9leGVjdXRhYmxlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVj
dXRhYmxlKTsKIH0KIAogQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEm
IGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmlu
ZGV4IDZlNDc3MzNiY2RkOTNkNzRiZmYxMWYyYTg0MmE4M2VjOTAzOGQyNTAuLjI3MWU2MWUwYTlh
NjAxOTQ3N2VmOTE2MmY1YTZjYzFhNmZiZWY0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0
YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFy
Z3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTdmNThlNGI3ZDVkNWNjZTgyMjNiZDE5N2EwMmNlZWFh
M2Y4N2JjMC4uNzVhYmRjMzcyODU4M2E5ODA0NGMwYmQxNGYyNDZlYzQ0ZjE3NjRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MzA4LDYzICszMDgsNjkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIAogdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5T
dGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sgCisgICAg
SlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdCo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBKU1ZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotCi0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9nbG9iYWxTY29wZUNoYWluKTsKLSAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX21ldGhvZENhbGxEdW1teSk7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX3JlZ0V4cENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX2Vycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZh
bEVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmFuZ2VF
cnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZmVyZW5j
ZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3ludGF4
RXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV90eXBlRXJy
b3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKLQotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZhbEZ1bmN0aW9u
KTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxGdW5jdGlvbik7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcHBseUZ1bmN0aW9uKTsKLQotICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fb2JqZWN0UHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX2Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZt
X2FycmF5UHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Jvb2xlYW5Q
cm90b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nUHJvdG90eXBl
KTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX251bWJlclByb3RvdHlwZSk7Ci0gICAg
dmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9kYXRlUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX3JlZ0V4cFByb3RvdHlwZSk7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX2FyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9hcnJheVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9ib29s
ZWFuT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxi
YWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9kYXRlU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX251bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXJyb3JT
dHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZnVuY3Rpb25TdHJ1Y3R1
cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbmFtZWRGdW5jdGlvblN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cFN0cnVjdHVyZSk7Ci0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7Ci0K
LSAgICBpZiAobV9yZWdpc3RlckFycmF5KSB7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJp
YWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZ2xvYmFsU2NvcGVDaGFp
bik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9tZXRob2RDYWxs
RHVtbXkpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdF
eHBDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+
bV9lcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fdHlwZUVy
cm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0
aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ib29sZWFuUHJvdG90eXBlKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N0cmluZ1Byb3RvdHlwZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9udW1iZXJQcm90b3R5cGUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZGF0ZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBQcm90
b3R5cGUpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcmd1
bWVudHNTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fYXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tP
YmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fZGF0ZVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1
Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVtYmVy
T2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJnRoaXNPYmplY3QtPm1fc3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmUpOworCisgICAgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheSkgewogICAgICAgICAv
LyBPdXRzaWRlIHRoZSBleGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxl
cyBhcmUgdG9ybiBvZmYsCiAgICAgICAgIC8vIHdlIGNhbiBtYXJrIHRoZSB0b3JuLW9mZiBhcnJh
eS4KLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9yZWdpc3RlckFycmF5LmdldCgpLCBt
X3JlZ2lzdGVyQXJyYXlTaXplKTsKLSAgICB9IGVsc2UgaWYgKG1fcmVnaXN0ZXJzKSB7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheS5nZXQo
KSwgdGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5U2l6ZSk7CisgICAgfSBlbHNlIGlmICh0aGlz
T2JqZWN0LT5tX3JlZ2lzdGVycykgewogICAgICAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIGds
b2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIGluIHRoZSByZWdpc3RlciBmaWxlLAog
ICAgICAgICAvLyB0aGUgc3ltYm9sIHRhYmxlIHRlbGxzIHVzIGhvdyBtYW55IHZhcmlhYmxlcyB0
aGVyZSBhcmUsIGFuZCByZWdpc3RlcnMKICAgICAgICAgLy8gcG9pbnRzIHRvIHdoZXJlIHRoZXkg
ZW5kLCBhbmQgdGhlIHJlZ2lzdGVycyB1c2VkIGZvciBleGVjdXRpb24gYmVnaW4uCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJzIC0gc3ltYm9sVGFibGUoKS5zaXplKCks
IHN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+bV9yZWdpc3RlcnMgLSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLnNpemUoKSwg
dGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZThhMDdlNzJl
MmM2NjJkZTU3ODdlNGM3NjQ0MjdhZWI0MDVjOGU3OS4uZGEzYzkxNWE5N2UyYTA2YjcyNTI3MmRl
NmRiNDgwNWRiZjEzNWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0xNzUsNiArMTc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAwNzBhNTNlMTlm
YzllMzc1ODkzMWMxODE0MGJmMjY2Yjk1YTlkOTVhLi4xYTk4ZWFiMDdkMzIwNzkwYmI0YzUyM2Rl
ZWI5YWIzNGNmN2E3M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC03MCwxMyArNzAsMTkgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKIAogdm9p
ZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRv
ci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXND
aGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIHZp
c2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJl
bkRpcmVjdCh2aXNpdG9yKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXNpdG9yLm1faXNDaGVj
a2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDUx
MzU5MGMwYjBmMmRiZWIzMzQ5YTRiZjI4ZTJlYjkwNTBhNTllZmQuLmFhMjA4YjMyMzI1OTQ5YzJj
MGU2ZjM3MzliNDYzMGFhYTUwNTNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtODEsNiArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAgICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYpOworICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ICAgICAgICAgLy8gVGhlIGlubGluZSB2aXJ0dWFsIGRlc3RydWN0b3IgY2Fubm90IGJlIHRoZSBm
aXJzdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCiAgICAgICAgIC8vIGluIHRoZSBjbGFzcyBh
cyBpdCByZXN1bHRzIGluIHRoZSB2dGFibGUgYmVpbmcgZ2VuZXJhdGVkIGFzIGEgd2VhayBzeW1i
b2wKQEAgLTgxNiw3ICs4MTcsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOwogCiAgICAgUHJvcGVydHlTdG9y
YWdlIHN0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUg
PSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRl
eCA0YzdhNmVlOTY3NDU4ZTkxNGE0NzMwZmRlNjRhM2FhNWU0NTEwOTU3Li4xMmVkYzIyMTkxYzc4
YTg4MzNjOTAyNGM5M2I0YTY1OGFmNGMxZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtOTQsMTEg
Kzk0LDE3IEBAIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogCiB2b2lkIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdG9yLmFw
cGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplKTsKLSAgICBpZiAo
bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblN0YXRpYyhK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2Jq
ZWN0LT5tX2pzU3RyaW5ncy5nZXQoKSwgdGhpc09iamVjdC0+bV9qc1N0cmluZ3NTaXplKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBhNzE5ZGUxY2I4ZjI3MTZhNzZhMjVlNWNh
MGMyNDdlNzdhNzZhYmExLi42YTU1Njc3Mjg2ZGJkMzcxZGZiY2M4ZjY0MzY0ZGM3ZDFkNDIzMThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCA1MjA2NTEwZDZjZDJhNzcyNGE3M2I1YmVkMTJhMWYy
ZDZkOGNjNzE2Li45NmQxMzFhNDAyZjYzNmI1NjI3MTMxZmQ2MTJmYjliOTRjM2VlMDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmNwcApAQCAtMzQsMTEgKzM0LDE3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNT
dGF0aWNTY29wZU9iamVjdCk7CiAKIHZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyhK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJpYWJs
ZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdpc3RlclN0b3JlKTsKIH0KIAogSlNPYmpl
Y3QqIEpTU3RhdGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmgKaW5kZXggMWY4ZDhiOGZlZjNkOGJjM2MxZTJiNWIyMDAxNmIyYTU5ZjVjNTI2ZS4u
MGU3MjQyMDkzMjMyODFjYmUxYTA0ODBkZDQwZmY2ODFiNjAyYmVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtNDIs
NiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBib29sIGlz
RHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3Bw
CmluZGV4IDhkNjM4N2VjMGFiMjBhZGY3YWZhNTNlMWYxMGZkYWQwNDMwZjAxZTIuLjcyMGIxOTVm
NmVhNGMyNWUzMDJmNGZhN2FmNGEyZGExYWU3M2ExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcApAQCAtMjgsMTIgKzI4LDE4IEBA
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNXcmFwcGVyT2JqZWN0KTsKIAogdm9pZCBKU1dy
YXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1dyYXBwZXJPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dyYXBwZXJP
YmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1f
aW50ZXJuYWxWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJuYWxWYWx1ZSk7
CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCBjZjQ0ZTA0ZTc4NWQyNGU0OWEwYjljNTU3MmQ1ZTE1
YzJhN2I0OTM0Li5kZTFiYzFiMGRhZDllMGY2ZTRhMzJkNDhhMTAxYzU3YTQyMzA2MmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAt
NDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAg
CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggYTEwM2MzNzYxMzYyYzI1M2I2Y2UyOGRhMWYyYzAyYTYxYWY2
Y2RmNy4uMGM2NTY2MWVkYWFiNGUzMDk0MjhlMmEyZWMxM2E3YzM2NTVhMjJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTM5LDEyICszOSwxOCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cgogCiB2
b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBJbnRlcm5hbEZ1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2Vycm9yU3RydWN0dXJl
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJU
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7CisgICAgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSkKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpOwogfQog
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggY2M0NjM1
YjUwZTA4NTY5ZWUwZDk1Y2YxYTgwMDUyZGY5NzBhYzUwMS4uMjNlM2MyZjk0YjM2N2QzNTFiYTgz
MmM0MGI2MmM5MGY3ZDUyOTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9y
U3RydWN0dXJlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcAppbmRleCBiYWU5MDg2MWVhNTM1OTA2YjllYTU2NWFjN2FkMmMzNDRjMWU2
YzVmLi41MTMzYWE1NGQxNDI0MmE2M2QxODcyZWMxZGMyNmM1NjZjYmRlOWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTgwLDE0ICs4
MCwyMCBAQCBSZWdFeHBPYmplY3Q6On5SZWdFeHBPYmplY3QoKQogCiB2b2lkIFJlZ0V4cE9iamVj
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWMo
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3Rh
dGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgUmVnRXhwT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0Kj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKGQtPnJlZ0V4cCkKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJmQtPnJlZ0V4cCk7Ci0gICAgaWYgKFVOTElLRUxZKCFkLT5sYXN0SW5kZXguZ2V0
KCkuaXNJbnQzMigpKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmQtPmxhc3RJbmRleCk7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+cmVnRXhwKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+cmVnRXhwKTsKKyAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QtPmQtPmxhc3RJbmRleC5nZXQoKS5pc0ludDMyKCkpKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+bGFzdEluZGV4KTsKIH0KIAogYm9vbCBSZWdFeHBPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCBjOWZiMDBiZjA5MDgzYzJlOTE1Nzg0Y2E3
M2UyNjE1YTRlNTJlNzMwLi43MGQ4YzRkZjk1ODA0YzdlNTQ3NDZkMDQ4OGQyZWVkMjFhYzgyNGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAt
ODMsNiArODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAg
ICBib29sIG1hdGNoKEV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW4uY3BwCmluZGV4IGRmNGRhNDFjMDIxMzk0MjcwNjU0YzA1MWM2ZjdjOGU1
Mjg4NWVjNjUuLmQzY2U5ZDhkODEwODAwOTk5OGRiZjU4ODFmZGZiY2YzMTg1ZTA3MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCkBAIC02OSwxNCAr
NjksMjAgQEAgaW50IFNjb3BlQ2hhaW5Ob2RlOjpsb2NhbERlcHRoKCkKIAogdm9pZCBTY29wZUNo
YWluTm9kZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5T
dGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBT
Y29wZUNoYWluTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFNjb3BlQ2hhaW5Ob2RlKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIGlmIChuZXh0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbmV4dCk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJm9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbE9iamVjdCk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbFRoaXMpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIGlm
ICh0aGlzT2JqZWN0LT5uZXh0KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bmV4dCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm9iamVjdCk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPmdsb2JhbFRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBkZDUwMDRiNTAw
YTgyY2FjNGVlYWYyYmJjNTc1Yjc4ZmQ4NDdkZjRhLi4zYjJmZmY1MzNmNmE0NDlhNmNmN2I4OWI3
YzViZWRmNzlkOTZjMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oCkBAIC04OCw2ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRl
eCAzMTNhODUxODcxNGQ2YzVmYmEzNTdiOWUzOWVkM2VmNjJmYzk0YjZjLi43ZmZkMGQ3ZDNhNTc2
NWU4MWEwN2MyZGJiMjFmMGQ3YjkwZWE2YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTcyNiwyNCArNzI2LDMwIEBAIHZvaWQgU3RydWN0dXJl
OjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
QXJyYXkmIHByCiAKIHZvaWQgU3RydWN0dXJlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2ds
b2JhbE9iamVjdCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZ2xvYmFsT2JqZWN0KTsKLSAg
ICBpZiAobV9wcm90b3R5cGUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3Byb3RvdHlwZSk7
Ci0gICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKLSAgICBpZiAobV9wcmV2aW91cykKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fcHJldmlvdXMpOwotICAgIGlmIChtX3NwZWNpZmljVmFsdWVJblBy
ZXZpb3VzKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91
cyk7Ci0gICAgaWYgKG1fZW51bWVyYXRpb25DYWNoZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jm1fZW51bWVyYXRpb25DYWNoZSk7Ci0gICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgewotICAgICAg
ICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwot
ICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIHB0ciA9IG1fcHJvcGVydHlUYWJs
ZS0+YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGlj
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlblN0YXRp
YyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFN0cnVjdHVyZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCkKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9w
cm90b3R5cGUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3RvdHlw
ZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9wcmV2aW91cykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcHJldmlvdXMpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3NwZWNpZmljVmFs
dWVJblByZXZpb3VzKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZW51bWVyYXRpb25D
YWNoZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZW51bWVyYXRpb25D
YWNoZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUt
PmVuZCgpOworICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIHB0ciA9IHRoaXNP
YmplY3QtPm1fcHJvcGVydHlUYWJsZS0+YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAg
ICAgICAgICAgIGlmIChwdHItPnNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnB0ci0+c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZDYwNzM3ZTVkZmIyMzgwMDBmOGVhOWQx
ZWNjNWQwNmU4ODFkNzU0ZC4uOWYwOWE3MWJmYWE5OWQyYzI1ODVhOWNiMGViMmJjYWJjMGFmMzYz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTEzMSw2
ICsxMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JM
b29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5
cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBj
b25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVy
biBtX3ByZXZpb3VzLmdldCgpOyB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlv
bmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2UwZjAyOGViNzA3Yzdl
MTE3MTFlODBhZTg0ZjkyOTg4MzkwOGExNC4uZGFhOTBjNWI4ODdkYjZjNjc1YjJhYWQzZWMyMjE5
NmQ0MjFiYzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmNwcApAQCAtNDUsMTEgKzQ1LDE3IEBAIFN0cnVjdHVyZUNoYWluOjp+U3RydWN0
dXJlQ2hhaW4oKQogCiB2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNf
aW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30K
Kwordm9pZCBTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFN0cnVjdHVyZUNoYWluKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlQ2hhaW4qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwogICAg
IHNpemVfdCBpID0gMDsKLSAgICB3aGlsZSAobV92ZWN0b3JbaV0pCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3ZlY3RvcltpKytdKTsKKyAgICB3aGlsZSAodGhpc09iamVjdC0+bV92ZWN0b3Jb
aV0pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ZlY3RvcltpKytdKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCBjZGQ2NGVmNmE2MWFlNDE0NDAzM2IwN2ZjMWVjMTky
NzAzMWFkZDBiLi44YTgyZjI4NzliYzFkNTE5OGFiYzMwOTVmOWM4ZTUzZjFjNTk3YmY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTUz
LDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAg
ICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7
IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhNzJjNWNlZDU5ZmIzZDhh
ZjNkMmMwYzFlODQwNGM4MTMxM2YyYzhiLi43MjI3Mzc5ODNkZDk1ZTFiMGNkMTMxOGU4NzZmMjYy
NWZjNzA4NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
MS0wOS0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBq
dXN0IGV4dHJhY3QgdGhlIGJvZGllcyBvZiB0aGUgdmlydHVhbCB2aXNpdENoaWxkcmVuIG1ldGhv
ZHMKKyAgICAgICAgdGhyb3VnaG91dCB0aGUgSlNDZWxsIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBv
dXQgaW50byBzdGF0aWMgbWV0aG9kcywgd2hpY2ggYXJlIAorICAgICAgICBub3cgY2FsbGVkIGZy
b20gdGhlIHZpcnR1YWwgbWV0aG9kcy4gIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4g
dHJ5aW5nIHRvIAorICAgICAgICBtb3ZlIHRoZSB2aXJ0dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJl
biBpbnRvIG91ciBvd24gY3VzdG9tIHZ0YWJsZSBzdG9yZWQgaW4gCisgICAgICAgIENsYXNzSW5m
by4gIFdlIG5lZWQgdG8gY29udmVydCB0aGUgbWV0aG9kcyB0byBzdGF0aWMgbWV0aG9kcyBpbiBv
cmRlciB0byBiZSAKKyAgICAgICAgYWJsZSB0byBtb3JlIGVhc2lseSBzdG9yZSBhbmQgcmVmZXIg
dG8gdGhlbSBpbiBvdXIgY3VzdG9tIHZ0YWJsZSBzaW5jZSBub3JtYWwgCisgICAgICAgIG1lbWJl
ciBtZXRob2RzIHN0b3JlIHNvbWUgaW1wbGljaXQgaW5mb3JtYXRpb24gaW4gdGhlaXIgdHlwZXMs
IG1ha2luZyBpdCAKKyAgICAgICAgaW1wb3NzaWJsZSB0byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5
IGluIENsYXNzSW5mby4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAo
VXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChVc2VyT2JqZWN0SW1wOjp2
aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisKIDIwMTEt
MDktMTQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnppcCBpbml0aWFsaXphdGlvbiBsaXN0cyBhbmQgY29uc3RydWN0b3JzIGluIEpTQ2VsbCBo
aWVyYXJjaHkgKDYvNykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2Jq
ZWN0SW1wLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAppbmRl
eCBhZDM2OTNiM2FkMTMwNWUwYTljMjQ2ZWI2Yzk5ODEzMzYxZTBmNGJlLi5lNTAzNzE4YjI4NDA1
ZGNkMzBkNzM3YzFhNjRjNjY4MDE5OTNlOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvVXNlck9iamVjdEltcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuY3BwCkBAIC00MDYsNyArNDA2LDEzIEBAIFVTdHJpbmcgVXNlck9iamVjdEltcDo6
dG9TdHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25zdAogCiB2b2lkIFVzZXJPYmplY3RJbXA6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKGZKU1VzZXJPYmplY3QpCi0gICAgICAgIGZKU1Vz
ZXJPYmplY3QtPk1hcmsoKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVc2VyT2JqZWN0SW1wKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8VXNlck9iamVjdEltcCo+KGNlbGwpOworICAgIEpTT2JqZWN0Ojp2
aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5mSlNVc2VyT2JqZWN0KQorICAgICAgICB0aGlzT2JqZWN0LT5mSlNVc2VyT2JqZWN0LT5N
YXJrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdElt
cC5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCA0M2ZmMGRh
OGQ3NTZhZmU2ZmYzZDdjODYzOWE5ZDMxM2FhZDA1YmJiLi5mOTFlNjYxMGJiMmU1ZWI1Y2NhYzli
MGIyYTk1MjEwMjJiM2VhY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNl
ck9iamVjdEltcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhF
eGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNlck9iamVjdCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjEyNTUzYzQ5MmQyNjM3NDYxMmUxNmZiZjU5YTk3
ZTgyMzlhYS4uODU4ZDhhYWFmMjAxZTUwMDI5MjJkYzNhOTNiZjEwN2YwZjNjMjRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMS0wOS0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBl
eHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisg
ICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGlu
dG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRo
ZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWlu
ZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50
byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBX
ZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIg
dG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRo
ZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0
aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtp
bmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBD
bGFzc0luZm8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQXR0cjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNB
dWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OnZpc2l0
Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2
aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVz
c2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TmFtZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFw
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNp
dENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRl
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0
Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuU3RhdGlj
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHls
ZVNoZWV0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Ry
ZWVXYWxrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJl
blN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxk
cmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlblN0YXRp
Yyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hQYXRoUmVzdWx0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYnJpZGdl
L3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVP
YmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRob2Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhv
ZDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUu
aDoKKwogMjAxMS0wOS0yMCAgQWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXdvcmsgc2NyaXB0IGNvbnRleHQgY3JlYXRpb24vcmVsZWFzZSBub3RpZmljYXRpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0NDlh
NWNlMTI3NzlmZDY4NjMwZTM2ZTMwNWMwY2MxODkxZmJhNzFmLi42MWY5OGI1NGQxOTI4NGRjYTUw
MTlhODUzMGQyZGU5ZmFmMmJmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXR0ckN1c3RvbS5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiB2b2lkIEpTQXR0cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZp
c2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBdHRyOjp2aXNp
dENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdHRyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBdHRyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBpbXBsKCktPm93bmVyRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGVsZW1lbnQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cAppbmRleCBjOGUxZWNlODFlZWQyMTRiZDQyZWNhYzVkNDBkMzlkZGJhZWYzNDg3Li5jYTEzOTgy
NDUyNzhhMDFlN2MzNWNhZmE4ODYyZDMzZGVlMzIwMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC00MSwxMSArNDEs
MTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXVkaW9Db250ZXh0Ojp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9Db250ZXh0KiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBdWRpb0NvbnRleHQqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLSAgICBtX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
QXVkaW9Db250ZXh0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVs
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwCmluZGV4IDE1NWJhNmUzY2M1MTVkNGVkOTVlYTE5ZmI0NDI5MzRkZTAyMjVjMDUuLjk2YjBh
Y2YyNDkwZmI4NTQzZTUwNjg5MzM2MThjZGJhZjVkOGRmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcApAQCAtNTAsMTEgKzUwLDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAm
c19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQ1NTUnVsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTQ1NTUnVsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENT
U1J1bGUqIHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA0NjVlNzgzNGE1ZDYwZWM2MmEw
ZmE0YThkOGVjZTQ0MmJmYWQyZTE0Li5lNDZhODEzMzU0YmI4ODllMTEyNjkwYjAwMTA1ZGQ1Mzk2
M2Y5MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTQ1LDExICs0NSwxNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NTU1N0eWxlRGVjbGFy
YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJv
b3Qocm9vdChpbXBsKCkpKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuU3RhdGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwogfQogCiAvLyBDaGVjayBmb3IgYSBDU1MgcHJl
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYWQ2NDZhMDUzMjgyNzI1YmEwOTJj
NTgyMzIxNmY3ZjA1ZDlmYzQ2MS4uNWJjNDA2NjdhZGE4OTllMWIzNTg0OWUwMTE1ZmU1NGI3OTUx
M2Q1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00MSwxMiArNDEsMTggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVu
U3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y2FudmFzKCkp
KTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCktPmNh
bnZhcygpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBv
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKaW5kZXggNzFkOThjOTFhNTdkN2I2MTMzMTdkYTZhN2I0ODEyNTQ3MDUxNDIwYy4uYjNm
NGEzNmVlMDU1M2M5MmVhYTZkZTU4NjVjMDQyZjFjMWY3NTVkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTUsMjMgKzU1LDI5
IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIHRoaXNWCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKIH0KIAotdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9
CisKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7Ci0gICAgZm9yIChKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmVzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3Ig
aXQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnNlY29uZCk7CiAKLSAgICBKU0RPTUNvbnN0cnVj
dG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3RydWN0b3JzKCkuZW5kKCk7Ci0gICAgZm9yIChK
U0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdDIgPSBjb25zdHJ1Y3RvcnMoKS5iZWdpbigp
OyBpdDIgIT0gZW5kMjsgKytpdDIpCisgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3Ig
ZW5kMiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmVuZCgpOworICAgIGZvciAoSlNET01D
b25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCku
YmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQy
LT5zZWNvbmQpOwogCi0gICAgaWYgKG1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmplY3Rl
ZFNjcmlwdCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5qZWN0ZWRT
Y3JpcHQpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRDdXJyZW50RXZlbnQoRXZl
bnQqIGN1cnJlbnRFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCmluZGV4IDkwMDI4MzA4MzRlMGYzMGIxYmUwZDQyZjgxNmI5MmU5MzEyNTk0
YzAuLjdmNGVmNjJjYTQ5M2I3Y2M5NGY2NTE1OGY0OGVlZDc0YzEwODhhMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtNjUsNiArNjUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTT2JqZWN0KiBpbmplY3RlZFNjcmlw
dCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlblN0YXRpYyhKU0M6
OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBET01XcmFwcGVyV29ybGQq
IHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggY2I0MWRiY2UxZWNjODhj
YTE0ZWRjNWI1MzNhNjgwNDIyM2Q2YzVkNy4uYTdlMjBlMjUxZWExNjBjMTg5NTBlMTBhYzE2MWQy
ZDMwZTE1MTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtNzksMTMgKzc5LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0
Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3c6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlt
cGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwotICAgIGlmIChGcmFtZSogZnJh
bWUgPSBpbXBsKCktPmZyYW1lKCkpCisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3Qt
PmltcGwoKS0+ZnJhbWUoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZyYW1lKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNw
cAppbmRleCAxNTg4ZDRmZWQwMjFlZTZjYzY2ZmY1MzliOGYwMDQ2YTNlYmQ5NGE3Li4wMWFkMmU5
MjEyNGI1MTJjZWJiN2RlZWM5NzQ4M2IyYjEzYmExNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtODMsMTQgKzgzLDIwIEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiAvLyBKU09iamVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLXZvaWQgSlNET01XaW5kb3dT
aGVsbDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNET01XaW5k
b3dTaGVsbDo6dmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjp2
aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2lu
ZG93U2hlbGwqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV93
aW5kb3cpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3dpbmRvdyk7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICBpZiAodGhpc09iamVjdC0+bV93aW5kb3cpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3dpbmRvdyk7CiB9CiAKIFVTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xh
c3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAppbmRleCBmZThhNGZkZTA5MTYyMzFmZDM3ZDYzZmNhMTQ4ZDM4N2JjZGUzODg1Li5m
NDE4ZTczNmI0OTBhOTg5YjQxNTRiNTQ0MzhkYTNhMzgxNDU4ZjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC03OCw2ICs3OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6
OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMo
SlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpV
U3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20u
Y3BwCmluZGV4IGViYzIzYjM2Y2QzZTQ3NTQ2MzdlNDIzZTdiNmNlNmEwMjQ5NzEwM2YuLmVmMDk1
MGVkZjkwYTA0Njg5YWZmZjgzMmE5YjVlMjcwZjE3MjE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNw
cApAQCAtMzYsMTEgKzM2LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0phdmFT
Y3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENo
aWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwotICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPihpbXBsKCkpLT52aXNp
dEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBzdGF0aWNfY2Fz
dDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4odGhpc09iamVjdC0+aW1wbCgpKS0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
CmluZGV4IDM0ZjU5MzEzMzVmZDdhOGJlNzMzMmFmNGJjOTRjYzc2OWFkMDJjY2QuLmFiYWY2OGMx
NTkzOTc2ZjA3ZTVmZDg0MzU4ZWRmYjJmNzVjZTJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0zMiwxOCAr
MzIsMjQgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKKwogdm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU01l
c3NhZ2VDaGFubmVsOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNNZXNzYWdlQ2hhbm5lbCogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PEpTTWVzc2FnZUNoYW5uZWwqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5w
b3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+
cG9ydDEoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogCi0gICAgaWYg
KE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9y
dCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+cG9ydDIoKSkKICAgICAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDhhZGY0YTdiYjM4ZWRhMGU0NmI0MDQ0
NGY0YWQzOGZiNWNiZjFhMTIuLjI0NWM3NWYwN2ViZDczZThlNzUyNTg4ZDhjODM5YTk4MDFhYzI2
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCkBAIC00NCwxNiArNDQsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEpTTWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENo
aWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTWVzc2FnZVBvcnQ6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU01lc3NhZ2VQb3J0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNNZXNzYWdlUG9y
dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgbG9jYWxseSBlbnRhbmdsZWQgcG9ydCwgd2UgY2FuIGRpcmVjdGx5
IG1hcmsgaXQgYXMgcmVhY2hhYmxlLiBQb3J0cyB0aGF0IGFyZSByZW1vdGVseSBlbnRhbmdsZWQg
YXJlIG1hcmtlZCBpbi11c2UgYnkgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCkuCi0gICAg
aWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpKQor
ICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+bG9jYWxseUVu
dGFuZ2xlZFBvcnQoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogCi0g
ICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cAppbmRleCA0N2Y1NmEyOWVmNDRhY2MwMTBmNTc0OTI4NzFjNmEwY2FlZDcwODhkLi4zODc3ZWRk
ZjMwNGU4Y2MzZjViNDFjOTU2MWRiMjgyY2JmOTU0MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNSw2ICszNSwx
MSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQg
SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwogYm9vbCBKU05hbWVk
Tm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1w
bCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBpbXBsLT5n
ZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAtNDYsMTgg
KzUxLDE5IEBAIEpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVuCiAgICAgcmV0dXJuIHRvSlMoZXhlYywg
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlk
ZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLXZvaWQgSlNOYW1lZE5vZGVN
YXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTmFtZWROb2Rl
TWFwOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICBKU05hbWVkTm9kZU1hcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFw
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAg
IC8vIFdlIG5lZWQgdG8ga2VlcCB0aGUgd3JhcHBlciBmb3Igb3VyIHVuZGVybHlpbmcgTmFtZWRO
b2RlTWFwJ3MgZWxlbWVudAogICAgIC8vIGFsaXZlIGJlY2F1c2UgTmFtZWROb2RlTWFwIGFuZCBB
dHRyIHJlbHkgb24gdGhlIGVsZW1lbnQgZm9yIGRhdGEsIGFuZAogICAgIC8vIGRvbid0IGtub3cg
aG93IHRvIGtlZXAgaXQgYWxpdmUgY29ycmVjdGx5LgogICAgIC8vIEZJWE1FOiBGaXggdGhpcyBs
aWZldGltZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCi0gICAgRWxlbWVudCog
ZWxlbWVudCA9IGltcGwoKS0+ZWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPmVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA1MWUzYmI4NmFhZWUz
MmI1ZjIxNjU5YmUxMzdjODJhNDQzMmZkZjExLi45YWQ3ODVjM2VlZTU3ZDlhYjhiOGYwYTAzNDNk
MmE1OWZlMDNhZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKQEAgLTE5NCwxMiArMTk0LDE4IEBAIFNjb3BlQ2hhaW5Ob2RlKiBKU05vZGU6OnB1c2hF
dmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSogbm9kZSkKIAogdm9p
ZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVu
U3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTm9kZTo6dmlzaXRDaGlsZHJlblN0
YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9kZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0
aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBOb2RlKiBub2RlID0gbV9pbXBsLmdldCgp
OworICAgIE5vZGUqIG5vZGUgPSB0aGlzT2JqZWN0LT5tX2ltcGwuZ2V0KCk7CiAgICAgbm9kZS0+
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3Qobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggYzE1MWM1NGM0YTAyYTk0ZjViMjJkNDNhYTY2YTJlNDE4
ZmUzMjE0MS4uMDVlYWY2ZGE5MDE1ZjhiMzlkOGE1MDkyODM5YWEyYjA2M2NjOWNmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBA
IC0zOCwxMSArMzgsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUZpbHRl
cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWMo
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuU3Rh
dGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2RlRmls
dGVyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNOb2RlRmlsdGVyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKSk7
CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+aW1w
bCgpKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmluZGV4IDAyZDEwOGQyNGY1ZGZh
YWUwOTNhMWRlY2NhNWIyNzZjNzEzODhiMGEuLjM0MDkxYTU1ZGQ3ZjIxMTYyNDc4MjY3NTk1YmUy
NTE3ODk3MmYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTMxLDEyICszMSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTm9k
ZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNOb2RlSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU05vZGVJdGVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gbV9pbXBsLT5maWx0ZXIo
KSkKKyAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5maWx0
ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRlcik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNl
Q3VzdG9tLmNwcAppbmRleCBkZDIwZmJhMGI3ODNkMDEzZjQyNGI1NzUyZTVjYTdlODkwMTE3YTM0
Li42Y2JiMzM4MjhlOWU3YTg1ZmY2ZmExNGNlMDc5NTA5NmY4MWYyZjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0
b20uY3BwCkBAIC0zNywxMSArMzcsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpT
U1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU1ZHRWxl
bWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuU3RhdGljKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU1ZHRWxlbWVudEluc3RhbmNlKiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTVkdFbGVtZW50SW5zdGFuY2UqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KGltcGwoKS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAppbmRleCAzZTM3
OTY5MzdjZGVhOGZlNWQ0YzZhYjA3ZjI0ZGYyZWE5ZWVmNGRjLi5lOWMwZTg5ZmU2YjJjZmY5ZDQ3
MjQ1ZGU2MGYzODhhZTY5NTE4ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC00NSwxMiArNDUsMTggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywg
JnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU2hhcmVkV29ya2VyKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3JrZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgp
LT5wb3J0KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09iamVjdC0+aW1wbCgp
LT5wb3J0KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKaW5k
ZXggMjFlMDBiMTY4YzIyNTQxMTgxMTRkMmE0OTFlMWU0ZTIwNTExYzZlNi4uNGQ1NTA4MDc2OWQ4
OTdkOGU2YTI2MzFiZGM4NDZjMWI2MjcyZDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCkBAIC0zNywxMSArMzcsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7Cit9CisK
K3ZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTdHlsZVNoZWV0KiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNTdHlsZVNoZWV0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVG
bGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRo
b3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpKTsKIH0K
IAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCmluZGV4IGRmZjM0NjljZTI5ODA3NDZh
NTIzMWU1ZDEzNjM5NzQ1MGJmYzI2NWMuLjNiMzVmMGU2ZjlhNDgwNmNmNzIzNWY5YTU0NGE3NTVl
YWU0OGI5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdh
bGtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fs
a2VyQ3VzdG9tLmNwcApAQCAtMjgsMTUgKzI4LDIxIEBACiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIHZvaWQgSlNUcmVlV2Fsa2VyOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1RyZWVXYWxrZXIqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU1RyZWVXYWxrZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3Rh
dGljKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9
IG1faW1wbC0+ZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IHRoaXNPYmpl
Y3QtPm1faW1wbC0+ZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggNTliNjM5MjAyZWRlMjYyYWE0
MTNlODZmYjAwOTk0NzQ5OTJjNjFmZS4uNjFiNjg5NTNjOGVlNTIxZDlmYjk3Y2Y5NGY5NWYwNjJh
YjcyZGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTk0LDExICsxOTQsMTcgQEAg
c3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KIAogdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+aW1wbCgpKTsKIH0KIAogSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwCmluZGV4IDg4N2EzYmMwNDVlOWJkNzFiN2Q0ZjJiNmYxOTljMzFkNjdlZDcwNmIuLmJiMTgz
ZTBlZDNlNDU4YjAzMzIzNTE1MmJiYzY2NDQzMTZkOWNkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNTUsMTcg
KzU1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dvcmtlckNvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRp
YyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTV29ya2VyQ29u
dGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoV29ya2Vy
TG9jYXRpb24qIGxvY2F0aW9uID0gaW1wbCgpLT5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYg
KFdvcmtlckxvY2F0aW9uKiBsb2NhdGlvbiA9IHRoaXNPYmplY3QtPmltcGwoKS0+b3B0aW9uYWxM
b2NhdGlvbigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobG9jYXRpb24pOwotICAg
IGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IGltcGwoKS0+b3B0aW9uYWxOYXZpZ2F0
b3IoKSkKKyAgICBpZiAoV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPm9wdGlvbmFsTmF2aWdhdG9yKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChuYXZpZ2F0b3IpOwogCi0gICAgaW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CiB9CiAKIGJvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyNTc1NzU2NjY2ZGZlNjBlN2EzZDI0ZGE3YTA5
MWVhMDMzYjkxYmQyLi4wNDdhY2E1YjQxNTkxMjUwN2I0MWMwZTM3MzM0YzU3MmIzY2Q0YTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcApAQCAtNTYsMjYgKzU2LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9p
ZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hNTEh0dHBSZXF1
ZXN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNYTUxIdHRwUmVxdWVzdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
WE1MSHR0cFJlcXVlc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSBtX2ltcGwt
Pm9wdGlvbmFsVXBsb2FkKCkpCisgICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQg
PSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkpCiAgICAgICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdCh1cGxvYWQpOwogCi0gICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3Vt
ZW50ID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiBy
ZXNwb25zZURvY3VtZW50ID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1M
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZURvY3VtZW50KTsKIAot
ICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IG1faW1wbC0+b3B0aW9u
YWxSZXNwb25zZUFycmF5QnVmZmVyKCkpCisgICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFy
cmF5QnVmZmVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZm
ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIp
OwogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQotICAgIGlmIChCbG9iKiByZXNwb25z
ZUJsb2IgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VCbG9iKCkpCisgICAgaWYgKEJsb2IqIHJl
c3BvbnNlQmxvYiA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkK
ICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiAjZW5kaWYKIAot
ICAgIG1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmpl
Y3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiAvLyBDdXN0
b20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQ
YXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhS
ZXN1bHRDdXN0b20uY3BwCmluZGV4IDM1NDg5ZGM0N2E4ZTAxNGVmMjQyNjIzNjQxY2ExZWE3YWE0
NzQyZjQuLjQyNjAzMjIzMzQ4YjBhZWJjYTU4ODY4YTAwOWI3Nzc2NmJlMTFlZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBA
IC0zOSwxMiArMzksMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTWFBhdGhSZXN1
bHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuU3RhdGlj
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5T
dGF0aWMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hQYXRo
UmVzdWx0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNYUGF0aFJlc3VsdCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBjb25zdCBYUGF0
aDo6VmFsdWUmIHhwYXRoVmFsdWUgPSBpbXBsKCktPnZhbHVlKCk7CisgICAgY29uc3QgWFBhdGg6
OlZhbHVlJiB4cGF0aFZhbHVlID0gdGhpc09iamVjdC0+aW1wbCgpLT52YWx1ZSgpOwogICAgIGlm
ICh4cGF0aFZhbHVlLmlzTm9kZVNldCgpKSB7CiAgICAgICAgIGNvbnN0IFhQYXRoOjpOb2RlU2V0
JiBub2Rlc1RvTWFyayA9IHhwYXRoVmFsdWUudG9Ob2RlU2V0KCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbm9kZXNUb01hcmsuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMDk1Mjhk
NTZiYzU5OTU5NjdkYjFhNDc2MWQwNWI4YWFiN2VmZmU5Yi4uMWIwZWVkZmQ1YTU3MDY3YjMyZjk4
NGQxN2FhZjFkNDUyNzljYzA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTg3Nyw3ICs4NzcsOCBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKIAogICAgICMgdmlzaXQgZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzTWFya0NoaWxk
cmVuKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYpO1xuXG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNp
dG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTtcblxuIik7
CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuIn0g
PSAxOwogICAgIH0KIApAQCAtMjIwMiwxOSArMjIwMywyNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuICYmICEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21NYXJrRnVuY3Rpb24ifSkgewogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlzaXRvcik7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlblN0YXRpYyhK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8JHtjbGFzc05hbWV9Kj4o
Y2VsbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6
dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0pIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsKCktPnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJG51bUNhY2hlZEF0
dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmF0
dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAobV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lIC4gIilcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKHRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAu
ICIpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZmM2ODNhNWRmOTQ1N2YxMTI2YjI5
ODdkOWZkMTYwNWY3MGEzMTFmMy4uM2ZhZmUxODRjN2JmODYyOWM3NmI0N2Y1OTVkNzFkYTBiOGE1
M2I1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4NzIsMTQgKzE4NzIsMjAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9w
dGlvbmFsKEUKIAogdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuU3RhdGljKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTVGVz
dE9iajo6dmlzaXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2NhY2hlZEF0
dHJpYnV0ZTEpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZEF0dHJpYnV0ZTEpOwot
ICAgIGlmIChtX2NhY2hlZEF0dHJpYnV0ZTIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Nh
Y2hlZEF0dHJpYnV0ZTIpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW5TdGF0aWModGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2Fj
aGVkQXR0cmlidXRlMSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2Fj
aGVkQXR0cmlidXRlMSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMikK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMik7
CiB9CiAKIC8vIENvbnN0YW50IGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCA4ZDUzNDEyZTg2NzYzOTZjNGUx
NjIxNTNlMTJjN2QzYjhlNzRkZDFmLi40ZGRiZjM4MTUxODU1NTlmNWIxOGNjNGJmYjIxMTBhNmM2
OTRiMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBKU0M6OldyaXRl
QmFycmllcjxKU0M6OlVua25vd24+IG1fY2FjaGVkQXR0cmlidXRlMTsKICAgICBKU0M6OldyaXRl
QmFycmllcjxKU0M6OlVua25vd24+IG1fY2FjaGVkQXR0cmlidXRlMjsKICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlblN0YXRpYyhKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKIAogICAgIC8v
IEN1c3RvbSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cAppbmRleCA0YmJlNjVlMDExM2RiZmM5ODRkN2E1NDY0NDdkZGU2NWMwOTkyNmFhLi5jMjMwMDFj
YTBhY2M5MmE4NDdiZTEyNTkzODE0Y2ZhYmI5ZmQ1YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAgLTY0LDggKzY0LDE0IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAg
ICAgICAgUnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgUXRJ
bnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzLCB2aXNpdG9yKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuU3RhdGljKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBRdFJ1bnRpbWVPYmplY3Qq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICAg
ICAgUnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyh0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKyAgICAgICAgUXRJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNl
Kj4odGhpc09iamVjdC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKICAgICAgICAgaWYgKGluc3Rh
bmNlKQogICAgICAgICAgICAgaW5zdGFuY2UtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA3M2RkMmJmNTYy
ZWVmMTJmMjIxYzY2MzI2MDg5Nzk4MzM2ODI4YmYwLi5hNmEwOWY1NDQwNzY3ZmVkYWFkMzJmZGUz
OTE5ZTE0NTkwZjhhNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
cnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
CkBAIC0xNDQxLDggKzE0NDEsMTQgQEAgdm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW4KIAogdm9pZCBR
dFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIFF0UnVudGltZU1ldGhvZDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBRV19E
KFF0UnVudGltZU1ldGFNZXRob2QpOworICAgIHZpc2l0Q2hpbGRyZW5TdGF0aWModGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlblN0YXRp
YyhKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFF0UnVudGltZU1l
dGFNZXRob2QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4o
Y2VsbCk7CisgICAgUXRSdW50aW1lTWV0aG9kOjp2aXNpdENoaWxkcmVuU3RhdGljKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworICAgIFF0UnVudGltZU1ldGFNZXRob2REYXRhKiBkID0gdGhpc09iamVj
dC0+ZF9mdW5jKCk7CiAgICAgaWYgKGQtPm1fY29ubmVjdCkKICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJmQtPm1fY29ubmVjdCk7CiAgICAgaWYgKGQtPm1fZGlzY29ubmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfcnVudGltZS5oCmluZGV4IDkwNmQxMDhlMWU3NjliMjU3NmFiZTNkZDEwNmQ3
NDM1YjhiZjI4NzAuLjkxYWZhZTVhNzgwNzAzMDM0MmU2OTkyNWE0YTVkMTZmNDA5NWNhMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAtMTY5LDYgKzE2OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW5TdGF0aWMoSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZU1ldGFNZXRob2REYXRhKiBkX2Z1
bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZERh
dGEqPihkX3B0cik7fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108194</attachid>
            <date>2011-09-21 11:35:17 -0700</date>
            <delta_ts>2011-09-21 11:56:41 -0700</delta_ts>
            <desc>Fixing windows</desc>
            <filename>bug-68404-20110921113516.patch</filename>
            <type>text/plain</type>
            <size>118231</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZk
ODEwNTk2My4uZTgyMDYzMDQ3ZGIwMGY3M2QwN2UwMTNlYzUyYWM1ZGU2MjUxMWE5MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTY4LDExICs2
OCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgOiBXZWFrSGFuZGxlT3duZXIgewog
ICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5kZWxldGVQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lKTsKICAgICB9CiAKLSAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCisgICAgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKKyAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+dmlzaXRDaGlsZHJlblZpcnR1YWwo
dmlzaXRvcik7CiAgICAgfQogCiAgICAgdm9pZCogcHJpdmF0ZURhdGE7CkBAIC05Nyw3ICs5Nyw3
IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAg
ICAgICAgICBtX3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
KyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yIChQcml2YXRlUHJvcGVydHlNYXA6Oml0ZXJhdG9y
IHB0ciA9IG1fcHJvcGVydHlNYXAuYmVnaW4oKTsgcHRyICE9IG1fcHJvcGVydHlNYXAuZW5kKCk7
ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQpAQCAtMTk2LDEzICsx
OTYsMTkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShD
YWxsRGF0YSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUygo
c3RhdGljX2Nhc3Q8UGFyZW50Kj4odGhpcykpLCAmSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpz
X2luZm8pOworICAgICAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKKyAgICB7CisgICAgICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CisgICAgICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoKHN0YXRpY19jYXN0PFBhcmVudCo+KHRoaXNPYmplY3QpKSwgJkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6c19pbmZvKTsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICAgICAgQVNTRVJUKFBhcmVudDo6c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICAgICAgUGFyZW50
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgICAgICBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPlBhcmVu
dDo6c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICAgICAgUGFyZW50Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgICAg
ICB0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0RGF0YS0+dmlzaXRDaGlsZHJlblZpcnR1YWwo
dmlzaXRvcik7CiAgICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTE5OGUyOTIzZWQwMGQ5YWYyMTZkYmFmZjcxZWMyYzE0MTIxNTVl
My4uZWZlNjM5ZmRkMDFlYWM1MWQyZTcyNjU1MDE0Y2I4YzExMTA3OTU2YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDExLTA5LTIwICBNYXJrIEhhaG5lbmJl
cmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9u
IG9mIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0aGUgYm9kaWVz
IG9mIHRoZSB2aXJ0dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0aHJvdWdob3V0
IHRoZSBKU0NlbGwgaW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRpYyBtZXRob2Rz
LCB3aGljaCBhcmUgCisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVhbCBtZXRob2Rz
LiAgVGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisgICAgICAgIG1v
dmUgdGhlIHZpcnR1YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93biBjdXN0b20g
dnRhYmxlIHN0b3JlZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0byBjb252ZXJ0
IHRoZSBtZXRob2RzIHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAorICAgICAgICBh
YmxlIHRvIG1vcmUgZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91ciBjdXN0b20g
dnRhYmxlIHNpbmNlIG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3RvcmUgc29tZSBp
bXBsaWNpdCBpbmZvcm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAorICAgICAgICBp
bXBvc3NpYmxlIHRvIHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZvLgorCisgICAg
ICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFj
dGl2YXRpb246OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAg
KEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRz
Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxk
cmVuU3RhdGljKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuU3Rh
dGljKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6
CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJy
YXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9K
U0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVu
U3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJl
blN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpTY29wZUNoYWluTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
Q2hhaW46OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaDoKKwogMjAxMS0wOS0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZmFjdG9yIEhlYXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFs
bG9jYXRpb25TcGFjZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKaW5kZXggNTI4YTUxNDhjZjU3NGU0YmVkYWJlYzVjMjNlMzg2MjVmMTcyMDkzYi4uODRlOWU4
ODNjMzI5YzNiYWU2NzY2ODA2YzkzMjkyN2E0OWQzZDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNjMsMTAgKzE2MywxMSBAQCBfX1pOM0pTQzEzU3Rh
dGVtZW50Tm9kZTZzZXRMb2NFaWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEwZ2xvYmFsRXhl
Y0V2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZUdldHRlckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKIF9fWk4zSlNDMTRKU0dsb2JhbE9i
amVjdDEyZGVmaW5lU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU184
SlNPYmplY3RFagotX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18x
MVNsb3RWaXNpdG9yRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBO
U182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZh
ZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9iYWxQcm9wZXJ0eUluZm9FaQogX19aTjNKU0MxNEpT
R2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxOGdldE93blBy
b3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0
eVNsb3RFCitfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJO
U18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFICAK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCkBAIC0xODAsNyAr
MTgxLDYgQEAgX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyMTBkaWRUaW1lT3V0RVBOU185RXhlY1N0
YXRlRQogX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJlc2V0RXYKIF9fWk4zSlNDMTRWVGFibGVT
cGVjdHJ1bTVjb3VudEVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNf
OUV4ZWNTdGF0ZUUKLV9fWk4zSlNDMTVKU1dyYXBwZXJPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5T
XzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUHZSTlNfMTFTbG90VmlzaXRv
ckUKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5r
bm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgpAQCAtMjc1LDExICsyNzUs
MTEgQEAgX19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzZSZWdFeHA1
bWF0Y2hFUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdFaVBOM1dURjZWZWN0b3JJaUxt
MzJFRUUKIF9fWk4zSlNDNlJlZ0V4cDZjcmVhdGVFUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VT
dHJpbmdFTlNfMTFSZWdFeHBGbGFnc0UKIF9fWk4zSlNDNlJlZ0V4cEQxRXYKLV9fWk4zSlNDN0pT
QXJyYXkxM3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzdKU0FycmF5
MTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzdKU0FycmF5MTRm
aW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183QXJnTGlzdEUKIF9fWk4zSlND
N0pTQXJyYXkxNXNldFN1YmNsYXNzRGF0YUVQdgogX19aTjNKU0M3SlNBcnJheTE4Z2V0T3duUHJv
cGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzdK
U0FycmF5MjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlND
N0pTQXJyYXk2c19pbmZvRQogX19aTjNKU0M3SlNBcnJheTlzZXRMZW5ndGhFagogX19aTjNKU0M3
SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUUKQEAgLTMwOCw3ICsz
MDgsNyBAQCBfX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lR2V0dGVyRVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVBTMF9qCiBfX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lU2V0dGVyRVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBTMF9qCiBfX1pOM0pTQzhKU09iamVjdDEy
bG9va3VwR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4
SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUK
LV9fWk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9yRQorX19a
TjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0
b3JFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFagogX19aTjNKU0M4SlNPYmplY3QxNXVud3JhcHBlZE9iamVjdEV2CkBAIC0zMjQs
NiArMzI0LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhl
Y1N0YXRlRWpOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzhKU09iamVjdDE4Z2V0T3duUHJvcGVydHlT
bG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhKU09iamVj
dDE4Z2V0UHJpbWl0aXZlTnVtYmVyRVBOU185RXhlY1N0YXRlRVJkUk5TXzdKU1ZhbHVlRQogX19a
TjNKU0M4SlNPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3
UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCitfX1pOM0pTQzhKU09iamVj
dDIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09i
amVjdDIxZ2V0UHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0MjJmaWxsR2V0
dGVyUHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQTlNfMTZXcml0ZUJhcnJpZXJCYXNl
SU5TXzdVbmtub3duRUVFCiBfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2VFUk5TXzEySlNHbG9iYWxEYXRhRW1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IGEwZDU0NjgwNjg4YTlhNGU4NDA0ZjlkNjVk
NmY2YmMzN2UwOTY2NWQuLjEwZWI0ZTZmOGU3MjRhYmZjOWM4MGVkYzU1OTM4Njg3YzkxM2IyNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCkBAIC0zNzgsMTEgKzM3OCwxMiBAQCBFWFBPUlRTCiAgICAgP3Vud3JhcHBlZE9iamVjdEBK
U09iamVjdEBKU0NAQFVBRVBBVjEyQFhaCiAgICAgP3V0ZjhAVVN0cmluZ0BKU0NAQFFCRT9BVkNT
dHJpbmdAV1RGQEBfTkBaCiAgICAgP3ZhbGlkYXRlVmFsdWVATWFya1N0YWNrQEpTQ0BAS0FYVkpT
VmFsdWVAMkBAWgotICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAVUFFWEFB
VlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBKU09iamVjdEBKU0NAQFVBRVhB
QVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5ASlNXcmFwcGVyT2JqZWN0QEpT
Q0BARUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBTY29wZUNoYWlu
Tm9kZUBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3Z0YWJsZUFuY2hvckBJbnRl
cm5hbEZ1bmN0aW9uQEpTQ0BARUFFWFhaCisgICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxPYmpl
Y3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hp
bGRyZW5ASlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCisg
ICAgP3Zpc2l0Q2hpbGRyZW5WaXJ0dWFsQEpTR2xvYmFsT2JqZWN0QEpTQ0BAVUFFWEFBVlNsb3RW
aXNpdG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJlblZpcnR1YWxASlNPYmplY3RASlNDQEBVQUVY
QUFWU2xvdFZpc2l0b3JAMkBAWgorICAgID92aXNpdENoaWxkcmVuVmlydHVhbEBTY29wZUNoYWlu
Tm9kZUBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3dhaXRAVGhyZWFkQ29uZGl0
aW9uQFdURkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25A
V1RGQEBZQUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBR
QkVfTlhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckFjdGl2YXRpb24uY3BwCmluZGV4IGFmNmE1NmY5YmUyYTYwNDc4MmM4NTBjMzFlZjU5ZDJmNDBj
ZGY1MGMuLmVmOTdiMGZjNTliNDQ1ZmU4MzQ4ZDNkZjQ5MDJlMGRkZTJiZDRjNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
Y3BwCkBAIC00MywxNSArNDMsMjEgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OmZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGFjdGkKICAgICBtX2Fj
dGl2YXRpb24uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+
KGFjdGl2YXRpb24pKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIERlYnVnZ2VyQWN0aXZhdGlv
biogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBKU09i
amVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU09i
amVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChtX2Fj
dGl2YXRpb24pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2FjdGl2YXRpb24pOworICAgIGlm
ICh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FjdGl2YXRpb24pOwogfQogCiBVU3RyaW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6
Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCBjY2RiZGU4ZjZjYjQwYWI3MTlkNTQ4NmEwYTQ4
NTRlNzA4ZmE5ZjcyLi5iMGMyMGMyY2M5MzlmZDliYzE3NGQ4NTI3ZjgwZDc4MGZhYTI2N2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGFjdGl2YXRpb247CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NO
YW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggZmQ2NjhiZDllZGI2OTgxMWNiYTM5N2VhNzhk
Y2I3MTI5NWRjNTI5ZC4uNTA3OTUxODI3NGJmODY5Yzc1OTNlZTk0OTY1N2ZhZjBjN2UyYmVlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2
ZVJvb3RzKQogICAgICAgICBpbnRlcm5hbEFwcGVuZChyb290c1tpXSk7CiB9CiAKLWlubGluZSB2
b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCkKK2lubGluZSB2b2lk
IFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuVmlydHVhbChKU0NlbGwqIGNlbGwpCiB7CiAjaWYg
RU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKICAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNv
dW50KGNlbGwpOwpAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2Vs
bCkpOwogICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21w
b3VuZFR5cGUpIHsKLSAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsK
KyAgICAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiAjZWxzZQogICAgICAgICBBU1NFUlQoIW1faXND
aGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKICAgICAgICAgbV9pc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICBjZWxsLT52aXNpdENoaWxkcmVu
KCp0aGlzKTsKKyAgICAgICAgY2VsbC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogICAg
ICAgICBBU1NFUlQobV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAg
ICBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCkBA
IC04MCw3ICs4MCw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCkKICAgICAgICAgYXNBcnJheShjZWxsKS0+dmlzaXRDaGlsZHJlbkRpcmVjdCgq
dGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2VsbC0+dmlzaXRDaGlsZHJlbigq
dGhpcyk7CisgICAgY2VsbC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogfQogCiB2b2lk
IFNsb3RWaXNpdG9yOjpkcmFpbigpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTbG90VmlzaXRv
cjo6ZHJhaW4oKQogI2lmIEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCiAgICAgICAgICAg
ICAgICAgbV92aXNpdGVkVHlwZUNvdW50cy5jb3VudChjZWxsKTsKICNlbmRpZgotICAgICAgICAg
ICAgICAgIGNlbGwtPkpTQ2VsbDo6dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgICAgICAgICAg
ICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudC5tX3ZhbHVlcyA9PSBlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgbV9tYXJr
U2V0cy5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTI2
LDEwICsxMjYsMTAgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogICAgICAgICAgICAgaWYg
KGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKQogICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVt
b3ZlTGFzdCgpOwogCi0gICAgICAgICAgICB2aXNpdENoaWxkcmVuKGNlbGwpOworICAgICAgICAg
ICAgdmlzaXRDaGlsZHJlblZpcnR1YWwoY2VsbCk7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUg
KCFtX3ZhbHVlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICB2aXNpdENoaWxkcmVuKG1fdmFsdWVz
LnJlbW92ZUxhc3QoKSk7CisgICAgICAgICAgICB2aXNpdENoaWxkcmVuVmlydHVhbChtX3ZhbHVl
cy5yZW1vdmVMYXN0KCkpOwogICAgIH0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9pc0Ry
YWluaW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApp
bmRleCA5MTQzYjAyZjEzM2EwZmNmZDcwMGZhZjY4NzAwYzA5ODgxYmVmNTcyLi5hNzVmMTRiMTNl
ZTM2YmUxZTBjMjcwZTRkNzYwODFiNmRlYjUzZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFy
dmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqKTsKKyAgICB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQ2VsbCopOwog
fTsKIAogaW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0cikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IGVjNmNj
OGYxYzcyMDdkYTgzYWYxNTE0MjZiOWY1ODFiMTk4NDZjNDkuLmJlZjMwZDhiYjMxOGUyZWJlNmZk
NGMzNGM0Njg5ZGY1OTE2MzJlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcApAQCAtNDMsMjUgKzQzLDMxIEBAIEFyZ3VtZW50czo6fkFyZ3VtZW50cygp
CiAgICAgICAgIGRlbGV0ZSBbXSBkLT5leHRyYUFyZ3VtZW50czsKIH0KIAotdm9pZCBBcmd1bWVu
dHM6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEFyZ3VtZW50czo6
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRo
aXMsIHZpc2l0b3IpOworfQorCit2b2lkIEFyZ3VtZW50czo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEFyZ3VtZW50cyogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEFyZ3VtZW50cyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChkLT5yZWdpc3RlckFycmF5KQotICAgICAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhkLT5yZWdpc3RlckFycmF5LmdldCgpLCBkLT5udW1QYXJh
bWV0ZXJzKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+cmVnaXN0ZXJBcnJheSkKKyAgICAgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+ZC0+cmVnaXN0ZXJBcnJheS5nZXQoKSwg
dGhpc09iamVjdC0+ZC0+bnVtUGFyYW1ldGVycyk7CiAKLSAgICBpZiAoZC0+ZXh0cmFBcmd1bWVu
dHMpIHsKLSAgICAgICAgdW5zaWduZWQgbnVtRXh0cmFBcmd1bWVudHMgPSBkLT5udW1Bcmd1bWVu
dHMgLSBkLT5udW1QYXJhbWV0ZXJzOwotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhkLT5l
eHRyYUFyZ3VtZW50cywgbnVtRXh0cmFBcmd1bWVudHMpOworICAgIGlmICh0aGlzT2JqZWN0LT5k
LT5leHRyYUFyZ3VtZW50cykgeworICAgICAgICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50cyA9
IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAtIHRoaXNPYmplY3QtPmQtPm51bVBhcmFtZXRl
cnM7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmQtPmV4dHJhQXJn
dW1lbnRzLCBudW1FeHRyYUFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAgdmlzaXRvci5hcHBlbmQo
JmQtPmNhbGxlZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmNhbGxlZSk7
CiAKLSAgICBpZiAoZC0+YWN0aXZhdGlvbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmQtPmFj
dGl2YXRpb24pOworICAgIGlmICh0aGlzT2JqZWN0LT5kLT5hY3RpdmF0aW9uKQorICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+YWN0aXZhdGlvbik7CiB9CiAKIHZvaWQgQXJn
dW1lbnRzOjpjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlciogYnVmZmVy
LCB1aW50MzJfdCBtYXhTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAppbmRleCA1NjExM2RmYTYxZDA5MjI1ZDFjYmMxOWMzOWNmMzJhMTQzMjNiNjcyLi41ZTIz
MDc0NmRjM2NjZTEzYjMwZjUxNmFkNTIyNjc5YjVhZjk5OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtOTAsNyArOTAsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZv
aWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXImKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBhZjRkMmM5
NGE1N2QxMzRlMTAxYjEwYjZhYzdiMDI0YTI2N2QyZThkLi5hODQwNjlmOTMwMmI0N2ZlODUzNjgz
MDIwMmI2MzUxZjdlZWUyNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcApAQCAtMjExLDE0ICsyMTEsMjAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwordm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEV2YWxFeGVjdXRhYmxlKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9ldmFsQ29kZUJsb2NrKQotICAgICAgICBt
X2V2YWxDb2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZXZhbENvZGVCbG9jaykKKyAgICAgICAgdGhpc09i
amVjdC0+bV9ldmFsQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAogdm9p
ZCBFdmFsRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQpAQCAtMzQwLDE0ICszNDYsMjAgQEAgdm9p
ZCBQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgUHJv
Z3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lk
IFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFByb2dy
YW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRv
cik7Ci0gICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jaykKLSAgICAgICAgbV9wcm9ncmFtQ29kZUJs
b2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBTY3Jp
cHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlm
ICh0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2spCisgICAgICAgIHRoaXNPYmplY3QtPm1f
cHJvZ3JhbUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAKIHZvaWQgUHJv
Z3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCkBAIC01MzMsMTggKzU0NSwyNCBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRnVuY3Rpb25F
eGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcp
OwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0g
ICAgaWYgKG1fbmFtZVZhbHVlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9uYW1lVmFsdWUp
OwotICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgIG1fY29kZUJsb2NrRm9yQ2Fs
bC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci0gICAgaWYgKG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0KQotICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdhdGUodmlz
aXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9uYW1lVmFs
dWUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVWYWx1ZSk7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICAgICAgdGhpc09iamVj
dC0+bV9jb2RlQmxvY2tGb3JDYWxsLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisgICAgICAgIHRoaXNPYmplY3Qt
Pm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAog
dm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRpc2NhcmRDb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAwNzY3NmFlNjZhOTRjYmY3MmYxNTY4ZTYy
Y2FmYzE0NzU5OGJlMDg4Li4xMDExNmUzZDRlZjkxMmVhZjU1ZmFlYTc1ODhkZGJiMWQ1YzdiYWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNjIs
NyArMzYyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sKTsKIAogICAgICAgICBKU09iamVjdCogY29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlw
ZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKIAogICAgICAgICBPd25QdHI8RXZhbENvZGVC
bG9jaz4gbV9ldmFsQ29kZUJsb2NrOwpAQCAtNDIzLDcgKzQyNCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
Jik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29w
ZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5cGUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2b2lkIHVubGlua0NhbGxzKCk7
CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsK
QEAgLTU2Miw3ICs1NjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hhcmVkU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJsZTsgfQogCiAg
ICAgICAgIHZvaWQgZGlzY2FyZENvZGUoKTsKLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA5OTAyYjc2OGYyNjg2Njli
ODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li45MTc5NTM0ODBlNTA0NzQ3YWI0ZDA2NWM5NjQ1Yzdm
ZmU4MDljYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAKQEAgLTMwLDE2ICszMCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIEdldHRlclNldHRlcjo6c19pbmZvID0geyAiR2V0dGVyU2V0dGVyIiwgMCwgMCwgMCB9
OwogCi12b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKK3ZvaWQgR2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLQotICAgIGlmICht
X2dldHRlcikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZ2V0dGVyKTsKLSAgICBpZiAobV9z
ZXR0ZXIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3NldHRlcik7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZXR0ZXJTZXR0
ZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxHZXR0ZXJTZXR0ZXIqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KworICAgIGlmICh0aGlzT2JqZWN0LT5tX2dldHRlcikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZ2V0dGVyKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9zZXR0ZXIpCisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NldHRlcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaAppbmRleCAxOWNkYmRkYjAxMmFhMjQ5NWE2NDJkYjBmMDI0OGU3MjZiYjUxOGZmLi5hMzEy
ZjczMGRkMzVmYzBiZWVjMzhkMzcwNzEyNWMzMDMyMWFhYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtNTMsNyArNTMsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZXR0ZXJTZXR0ZXI7CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRlci5nZXQoKTsg
fQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGdldHRlcik7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4
IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVkNTQ5NzFjOGZiZDg4NWUuLmE2MWQzNzFmY2U3NTFi
YzMxMWVkZDUyN2E4OTdlMmZhMzFkN2JjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNjMsMjIgKzYzLDI4IEBAIEpTQWN0aXZhdGlv
bjo6fkpTQWN0aXZhdGlvbigpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkU3ltYm9sVGFibGUqPiht
X3N5bWJvbFRhYmxlKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0
b3IpOworfQorCit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9
IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CiAKICAgICAvLyBObyBuZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0
aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZpbGUuCi0gICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiByZWdpc3RlckFycmF5ID0gbV9yZWdpc3RlckFycmF5LmdldCgpOworICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJh
eS5nZXQoKTsKICAgICBpZiAoIXJlZ2lzdGVyQXJyYXkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIG1fbnVtUGFyYW1ldGVyc01pbnVz
VGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSwgdGhpc09iamVj
dC0+bV9udW1QYXJhbWV0ZXJzTWludXNUaGlzKTsKIAogICAgIC8vIFNraXAgdGhlIGNhbGwgZnJh
bWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0aGUgcGFyYW1ldGVycyBhbmQgdmFycy4KLSAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgbV9udW1QYXJhbWV0ZXJzTWludXNUaGlz
ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBtX251bUNhcHR1cmVkVmFycyk7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSArIHRoaXNPYmplY3QtPm1f
bnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSwgdGhpc09iamVjdC0+bV9udW1DYXB0dXJlZFZhcnMpOwogfQogCiBpbmxpbmUgYm9vbCBKU0Fj
dGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uaAppbmRleCBkODYzNTkzYjMyYjE4MDRiNjE2ZTdiYTViYzhiZjFjYzVhNmE1Zjlh
Li45OTEwOTc2ZDM0Zjk4ZGJkY2FkZjk4NDJlYzE4MDI3NTM1ZWZiYzUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApAQCAtNTUsNyArNTUsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIH5KU0FjdGl2YXRpb24oKTsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVj
a3MpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmlu
ZGV4IDRiMGNhYTIyMTY4MmY2YzY4YTYwNWU4YWY5ZTU0MDY2NThjMDMyY2EuLmM4MzY2MTVhMTBi
ZGM3ZGM4N2ViYmZmYjI3ZTM3YmE3OGY5ZjQ4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCkBAIC04NzEsMTIgKzg3MSwxOCBAQCB2b2lkIEpTQXJyYXk6OnVu
c2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBjb3VudCkKICAgICAgICAgdmVjdG9yW2ld
LmNsZWFyKCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3ZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQXJyYXk6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBKU0FycmF5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBcnJheSo+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdENo
aWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIHRoaXNPYmplY3Qt
PnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZU51
bWJlcnNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDU2NjIyMjVlNTdjZDE5NzUzY2QyOTQ2ZTFi
NjJmNTcyNmMwNmRiNDcuLmU4ZmU3ODk1MDI4ZGY5MzcyOWEzMDM0NmYwMGRjY2Y1ZmY1OTllYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE3Miw3ICsxNzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKaW5kZXggNmRmNWI5ODc5MmZiNTE1OWUyZThiYmRhNWFkMzBlYzE4ZTI5Mzc3
Yy4uOWVlNTIyZjBjZThlMmI2NWFmYzJlNTI5ZmZhOTBjZTVhNDVjZWFmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTg0LDcgKzg0LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0
b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3Q7CkBAIC0xNzYsOSArMTc3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQg
SlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIGlubGluZSB2
b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgewotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOworICAgICAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworICAgIH0KKworICAgIGlubGluZSB2b2lkIEpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAg
IHsKKyAgICAgICAgSlNDZWxsKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cnVjdHVyZSk7CiAg
ICAgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmlu
ZGV4IDQwMjZjOTk2NzlmYjE1NWQ5OWMzZDMzZDAyNWFlYzVmMTVjNmIzNmQuLjVjZGNlNjJjMzU0
YjE2ZDYyY2U0Y2RhYzIzYjJmNzYzMGZjYTcwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMzEsMTYgKzEzMSwyMiBAQCBjb25zdCBVU3Ry
aW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIG5hbWUoZXhlYyk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBP
dmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRp
bmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9zY29wZUNoYWluKTsKLSAgICBpZiAobV9leGVjdXRh
YmxlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9leGVjdXRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZUNoYWluKTsKKyAgICBpZiAodGhpc09iamVjdC0+
bV9leGVjdXRhYmxlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVj
dXRhYmxlKTsKIH0KIAogQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEm
IGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmlu
ZGV4IDZlNDc3MzNiY2RkOTNkNzRiZmYxMWYyYTg0MmE4M2VjOTAzOGQyNTAuLjVhN2JiNDFhMDEz
MTRkZDA2ZTZiNzViNjNjOGJjMmMzODE3M2M4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE1NCw3ICsxNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVl
IGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggYTdmNThlNGI3ZDVkNWNjZTgyMjNiZDE5N2EwMmNlZWFhM2Y4N2JjMC4uYjJmNmU3MGJjMzgy
MmQyYmM1Y2RlMGNhYjViOTc4OTE4YmRlMWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA2LDY1ICszMDYsNzEgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4tPnNl
dFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmplY3RQcm90b3R5cGUpOwogfQogCi12b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7IAorICAgIEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLQotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fZ2xvYmFsU2NvcGVDaGFpbik7Ci0gICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9tZXRob2RDYWxsRHVtbXkpOwotCi0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9yZWdFeHBDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9lcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2V2YWxF
cnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JhbmdlRXJy
b3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3N5bnRheEVy
cm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fdHlwZUVycm9y
Q29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fVVJJRXJyb3JDb25z
dHJ1Y3Rvcik7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2V2YWxGdW5jdGlvbik7
Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsRnVuY3Rpb24pOwotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fYXBwbHlGdW5jdGlvbik7Ci0KLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX29iamVjdFByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9h
cnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9ib29sZWFuUHJv
dG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3N0cmluZ1Byb3RvdHlwZSk7
Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1iZXJQcm90b3R5cGUpOwotICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0ZVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9yZWdFeHBQcm90b3R5cGUpOwotCi0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
Jm1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYm9vbGVh
bk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsYmFj
a0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Nh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
ZGF0ZVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9lbXB0eU9iamVj
dFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udWxsUHJvdG90eXBl
T2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Vycm9yU3Ry
dWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Z1bmN0aW9uU3RydWN0dXJl
KTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbnVtYmVyT2JqZWN0U3RydWN0dXJlKTsK
LSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBTdHJ1Y3R1cmUpOwotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotCi0g
ICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgeworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTVmFyaWFi
bGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2dsb2JhbFNjb3BlQ2hhaW4pOworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbWV0aG9kQ2FsbER1bW15KTsK
KworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVnRXhwQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZXJyb3JD
b25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9l
dmFsRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09i
amVjdC0+bV9yYW5nZUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJnRoaXNPYmplY3QtPm1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0
cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX1VSSUVy
cm9yQ29uc3RydWN0b3IpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9ldmFsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fY2FsbEZ1bmN0aW9uKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhp
c09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYm9vbGVhblByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdQcm90b3R5cGUpOworICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG90eXBlKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2RhdGVQcm90b3R5cGUpOworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVnRXhwUHJvdG90eXBlKTsK
KworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYXJndW1lbnRzU3Ry
dWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FycmF5
U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Jv
b2xlYW5PYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNP
YmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2RhdGVT
dHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZW1w
dHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmdGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX251bWJlck9iamVjdFN0
cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKKwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkpIHsKICAgICAgICAgLy8gT3V0c2lk
ZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRv
cm4gb2ZmLAogICAgICAgICAvLyB3ZSBjYW4gbWFyayB0aGUgdG9ybi1vZmYgYXJyYXkuCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJBcnJheS5nZXQoKSwgbV9yZWdpc3Rl
ckFycmF5U2l6ZSk7Ci0gICAgfSBlbHNlIGlmIChtX3JlZ2lzdGVycykgeworICAgICAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNP
YmplY3QtPm1fcmVnaXN0ZXJBcnJheVNpemUpOworICAgIH0gZWxzZSBpZiAodGhpc09iamVjdC0+
bV9yZWdpc3RlcnMpIHsKICAgICAgICAgLy8gRHVyaW5nIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29k
ZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSBpbiB0aGUgcmVnaXN0ZXIgZmlsZSwKICAgICAgICAg
Ly8gdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyBob3cgbWFueSB2YXJpYWJsZXMgdGhlcmUgYXJl
LCBhbmQgcmVnaXN0ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0byB3aGVyZSB0aGV5IGVuZCwgYW5k
IHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJlZ2luLgotICAgICAgICB2aXNpdG9y
LmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVycyAtIHN5bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xU
YWJsZSgpLnNpemUoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3Qt
Pm1fcmVnaXN0ZXJzIC0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5zaXplKCksIHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGU4YTA3ZTcyZTJjNjYyZGU1
Nzg3ZTRjNzY0NDI3YWViNDA1YzhlNzkuLmI5YTY2ZGEzODg1OWEyOWM0NWEzMGRjMzA1YzIwNWQ1
NmM0YTdmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMTc0LDcgKzE3NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAwNzBhNTNlMTlm
YzllMzc1ODkzMWMxODE0MGJmMjY2Yjk1YTlkOTVhLi5hMmU5M2U4OTI1YWQxNmI2YjczYjZiYTUz
MzNkZjM1M2VkN2Q1NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC02OCwxNSArNjgsMjEgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICB9
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAg
IHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRv
ci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXND
aGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIHZp
c2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJl
bkRpcmVjdCh2aXNpdG9yKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXNpdG9yLm1faXNDaGVj
a2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDUx
MzU5MGMwYjBmMmRiZWIzMzQ5YTRiZjI4ZTJlYjkwNTBhNTllZmQuLmJmZGIyNzUyYWJjYTk2YWQ0
MThiYmFiOGYyZjdiNjVmZWQ3NDA0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtNzksOCArNzksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2
aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICAvLyBUaGUgaW5s
aW5lIHZpcnR1YWwgZGVzdHJ1Y3RvciBjYW5ub3QgYmUgdGhlIGZpcnN0IHZpcnR1YWwgZnVuY3Rp
b24gZGVjbGFyZWQKICAgICAgICAgLy8gaW4gdGhlIGNsYXNzIGFzIGl0IHJlc3VsdHMgaW4gdGhl
IHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJvbApAQCAtODE2LDcgKzgxNyw3
IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIAogQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0
Ojp2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3Rv
cmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDRjN2E2ZWU5Njc0NThlOTE0YTQ3MzBm
ZGU2NGEzYWE1ZTQ1MTA5NTcuLmVhNDJkNzhmMGFkMjNjOTViODEzNjZlODI5MGY1YTMwYzViMzA5
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC05MiwxMyArOTIsMTkgQEAgSlNWYWx1ZSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6
ZV90IGkpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmlu
Z3NTaXplKTsKLSAgICBpZiAobV9jYWNoZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT5tX2pzU3RyaW5ncy5nZXQoKSwgdGhpc09iamVjdC0+bV9qc1N0cmluZ3NTaXpl
KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBhNzE5ZGUxY2I4ZjI3MTZhNzZh
MjVlNWNhMGMyNDdlNzdhNzZhYmExLi5jNmY2OTc5NzJjYTc1NDZiNTJhNjQ2YjM3MGM5ZDBmZjU3
MWM4NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC01OCw3ICs1OCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4pLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6
ZV90IGksIGludCYgb2Zmc2V0KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCmluZGV4IDUyMDY1MTBkNmNk
MmE3NzI0YTczYjViZWQxMmExZjJkNmQ4Y2M3MTYuLjMxZGE4MGE3OWVjZDYwN2VlMTk5MjI3YjAy
YWU3ZWQ0ZmQzZWIxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCkBAIC0zMiwxMyArMzIsMTkgQEAKIG5hbWVzcGFj
ZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsK
IAotdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQordm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3Zv
aWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTVmFyaWFibGVPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fcmVnaXN0ZXJT
dG9yZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9yZWdpc3RlclN0b3JlKTsKIH0KIAogSlNPYmplY3QqIEpTU3RhdGljU2NvcGVPYmplY3Q6
OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKaW5kZXggMWY4ZDhiOGZl
ZjNkOGJjM2MxZTJiNWIyMDAxNmIyYTU5ZjVjNTI2ZS4uODIxMTc4YTlhZmI4NjNjMjZlN2ZmY2Vh
NmEyYTRlMDhjYjhlZWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlND
ewogICAgICAgICAgICAgcmV0dXJuIHNjb3BlT2JqZWN0OwogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgYm9v
bCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmNwcAppbmRleCA4ZDYzODdlYzBhYjIwYWRmN2FmYTUzZTFmMTBmZGFkMDQzMGYwMWUyLi42OTE5
MmZlM2NkNzgzZGYxNGUwNDQ1NDk5OTJkZDk1ZGJmOWUwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKQEAgLTI2LDE0ICsyNiwy
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBw
ZXJPYmplY3QpOwogCi12b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikgCit2b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30K
Kwordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dyYXBwZXJPYmplY3QqIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxKU1dyYXBwZXJPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
dmlzaXRvcik7Ci0gICAgaWYgKG1faW50ZXJuYWxWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1faW50ZXJuYWxWYWx1ZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1f
aW50ZXJuYWxWYWx1ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50
ZXJuYWxWYWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCBjZjQ0ZTA0ZTc4NWQyNGU0
OWEwYjljNTU3MmQ1ZTE1YzJhN2I0OTM0Li45NTk2YWE0ZTMyMGY5MjZlY2U3ZjFmYWI2ODQzZWQ0
ZjlhMTFkMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBw
ZXJPYmplY3QuaApAQCAtNDUsNyArNDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAg
ICAgCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTEwM2MzNzYxMzYyYzI1M2I2Y2UyOGRhMWYyYzAyYTYx
YWY2Y2RmNy4uZTU4MWRhOWY0NDljZjM5MjQzOTg1MWE4MDZiZTE5OWM1NTU5NDAwNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM3LDE0ICszNywyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cgog
ewogfQogCi12b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9l
cnJvclN0cnVjdHVyZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZXJyb3JTdHJ1Y3R1cmUp
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEludGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1
cmUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJl
KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0
aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4
IGNjNDYzNWI1MGUwODU2OWVlMGQ5NWNmMWE4MDA1MmRmOTcwYWM1MDEuLjhjMjcyZWFhMmE4NjRj
MDgwYTFkMjE0ZGNmM2ViNzZmOGJlMGEzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTcwLDcgKzcwLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1
Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90Vmlz
aXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVj
dHVyZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAKaW5kZXggYmFlOTA4NjFlYTUzNTkwNmI5ZWE1NjVhYzdhZDJjMzQ0YzFlNmM1Zi4u
MTIzZGQ2ZTlhMTZmZjY5MmY2YjI3NDdiZDIwZmRiMmY3MjBkNDEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03OCwxNiArNzgsMjIg
QEAgUmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2JqZWN0KCkKIHsKIH0KIAotdm9pZCBSZWdFeHBPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFJlZ0V4cE9iamVj
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVu
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFJlZ0V4cE9iamVjdCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9B
U1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChkLT5yZWdFeHApCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZkLT5yZWdFeHApOwotICAgIGlmIChVTkxJS0VMWSghZC0+bGFzdEluZGV4LmdldCgpLmlz
SW50MzIoKSkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5sYXN0SW5kZXgpOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJlZ0V4cCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPmQtPnJlZ0V4cCk7CisgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0LT5k
LT5sYXN0SW5kZXguZ2V0KCkuaXNJbnQzMigpKSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPmQtPmxhc3RJbmRleCk7CiB9CiAKIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmgKaW5kZXggYzlmYjAwYmYwOTA4M2MyZTkxNTc4NGNhNzNlMjYxNWE0ZTUy
ZTczMC4uMTFlMDE5NWVhOTg1NjVjYTcxMTlkMDdhNDE2M2YyM2UwMzM0ZGM4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTgyLDcgKzgyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9v
bCBtYXRjaChFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZUNoYWluLmNwcAppbmRleCBkZjRkYTQxYzAyMTM5NDI3MDY1NGMwNTFjNmY3YzhlNTI4ODVl
YzY1Li4xM2I3OWQ5YjBkZjc5ZmMxMTU5ODg0OTU2NDc5N2UwMmU4NDczM2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcApAQCAtNjcsMTYgKzY3LDIy
IEBAIGludCBTY29wZUNoYWluTm9kZTo6bG9jYWxEZXB0aCgpCiAgICAgcmV0dXJuIHNjb3BlRGVw
dGg7CiB9CiAKLXZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBTY29wZUNoYWluTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PFNjb3BlQ2hhaW5Ob2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIGlmIChuZXh0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
bmV4dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
Jmdsb2JhbE9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbFRoaXMpOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5uZXh0KQorICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bmV4dCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbFRoaXMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aAppbmRleCBkZDUwMDRiNTAwYTgyY2FjNGVlYWYyYmJjNTc1Yjc4ZmQ4NDdkZjRhLi5hYzUyYzY3
N2JiNTQxOTY3YjQwMDY5MDZjM2Y0Yzc1ZmVmZWE0ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC04Nyw3ICs4Nyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgJnNfaW5mbyk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCAzMTNhODUxODcxNGQ2YzVmYmEzNTdiOWUzOWVkM2VmNjJm
Yzk0YjZjLi40ZWRkZTlmNGJlYTllZmQ5MDU1Y2YyMDYyMjVhOTE4MjMwYTBhYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTcyNCwyNiArNzI0
LDMyIEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkmIHByCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVy
ZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9nbG9iYWxPYmplY3QpCi0gICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7Ci0gICAgaWYgKG1fcHJvdG90eXBlKQotICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmbV9wcm90b3R5cGUpOwotICAgIGlmIChtX2NhY2hlZFByb3RvdHlw
ZUNoYWluKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRQcm90b3R5cGVDaGFpbik7
Ci0gICAgaWYgKG1fcHJldmlvdXMpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3ByZXZpb3Vz
KTsKLSAgICBpZiAobV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwotICAgIGlmIChtX2VudW1lcmF0aW9u
Q2FjaGUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2VudW1lcmF0aW9uQ2FjaGUpOwotICAg
IGlmIChtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3Ig
ZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKLSAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxl
OjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsr
cHRyKSB7Cit2b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9p
ZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBTdHJ1Y3R1cmUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1
cmUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpCisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7CisgICAg
aWYgKHRoaXNPYmplY3QtPm1fcHJvdG90eXBlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9wcm90b3R5cGUpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NhY2hlZFByb3Rv
dHlwZUNoYWluKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRQ
cm90b3R5cGVDaGFpbik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJldmlvdXMpCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKKyAgICBpZiAodGhpc09i
amVjdC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb3BlcnR5
VGFibGUpIHsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVj
dC0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKKyAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IHB0ciAh
PSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICBpZiAocHRyLT5zcGVjaWZpY1ZhbHVlKQogICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZwdHItPnNwZWNpZmljVmFsdWUpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGQ2MDcz
N2U1ZGZiMjM4MDAwZjhlYTlkMWVjYzVkMDZlODgxZDc1NGQuLjk1OGFkMWI3NWI4ZmU1N2JiYjU2
ZmRlOGJiODM4ZjVlYjJkZjY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCkBAIC0xMzAsNyArMTMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
VmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7
IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZv
aWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIFN0cnVj
dHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KICAgICAgICAgYm9vbCB0
cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcApp
bmRleCAzZTBmMDI4ZWI3MDdjN2UxMTcxMWU4MGFlODRmOTI5ODgzOTA4YTE0Li4wZmIyOGRlNWZl
N2E2YjQwZmJjZWM2NWU3NTQ4MzQxOWYwZmMzNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC00MywxMyArNDMsMTkgQEAgU3Ry
dWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCiB7CiB9CiAKLXZvaWQgU3RydWN0dXJlQ2hh
aW46OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFN0cnVjdHVyZUNo
YWluOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIHZpc2l0
Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTdHJ1
Y3R1cmVDaGFpbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUNoYWluKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
KyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKICAgICBzaXplX3QgaSA9IDA7Ci0gICAgd2hpbGUgKG1fdmVjdG9y
W2ldKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV92ZWN0b3JbaSsrXSk7CisgICAgd2hpbGUg
KHRoaXNPYmplY3QtPm1fdmVjdG9yW2ldKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV92ZWN0b3JbaSsrXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKaW5kZXggY2RkNjRlZjZh
NjFhZTQxNDQwMzNiMDdmYzFlYzE5MjcwMzFhZGQwYi4uMTkwYzVjMmY0ZTQ0N2VjYzIwOTE4MmRh
ZWQ4NDVlNTBmMTlmOThmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCkBAIC01Miw3ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGNoYWluOwogICAgICAgICB9CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7IH0KICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL0NoYW5nZUxvZwppbmRleCBhNzJjNWNlZDU5ZmIzZDhhZjNkMmMwYzFlODQwNGM4MTMxM2Yy
YzhiLi43MjI3Mzc5ODNkZDk1ZTFiMGNkMTMxOGU4NzZmMjYyNWZjNzA4NDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0yMCAgTWFyayBIYWhuZW5i
ZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lv
biBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBqdXN0IGV4dHJhY3QgdGhlIGJvZGll
cyBvZiB0aGUgdmlydHVhbCB2aXNpdENoaWxkcmVuIG1ldGhvZHMKKyAgICAgICAgdGhyb3VnaG91
dCB0aGUgSlNDZWxsIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBvdXQgaW50byBzdGF0aWMgbWV0aG9k
cywgd2hpY2ggYXJlIAorICAgICAgICBub3cgY2FsbGVkIGZyb20gdGhlIHZpcnR1YWwgbWV0aG9k
cy4gIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4gdHJ5aW5nIHRvIAorICAgICAgICBt
b3ZlIHRoZSB2aXJ0dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJlbiBpbnRvIG91ciBvd24gY3VzdG9t
IHZ0YWJsZSBzdG9yZWQgaW4gCisgICAgICAgIENsYXNzSW5mby4gIFdlIG5lZWQgdG8gY29udmVy
dCB0aGUgbWV0aG9kcyB0byBzdGF0aWMgbWV0aG9kcyBpbiBvcmRlciB0byBiZSAKKyAgICAgICAg
YWJsZSB0byBtb3JlIGVhc2lseSBzdG9yZSBhbmQgcmVmZXIgdG8gdGhlbSBpbiBvdXIgY3VzdG9t
IHZ0YWJsZSBzaW5jZSBub3JtYWwgCisgICAgICAgIG1lbWJlciBtZXRob2RzIHN0b3JlIHNvbWUg
aW1wbGljaXQgaW5mb3JtYXRpb24gaW4gdGhlaXIgdHlwZXMsIG1ha2luZyBpdCAKKyAgICAgICAg
aW1wb3NzaWJsZSB0byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5IGluIENsYXNzSW5mby4KKworICAg
ICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAoVXNlck9iamVjdEltcDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChVc2VyT2JqZWN0SW1wOjp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisKIDIwMTEtMDktMTQgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnppcCBpbml0aWFsaXphdGlv
biBsaXN0cyBhbmQgY29uc3RydWN0b3JzIGluIEpTQ2VsbCBoaWVyYXJjaHkgKDYvNykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAppbmRleCBhZDM2OTNiM2FkMTMwNWUwYTlj
MjQ2ZWI2Yzk5ODEzMzYxZTBmNGJlLi42YzNhN2Q0OTVhZTE0NTFlNzEwZmZhOWEwY2E3MDQzYTdj
MGFmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCkBAIC00MDQs
OSArNDA0LDE1IEBAIFVTdHJpbmcgVXNlck9iamVjdEltcDo6dG9TdHJpbmcoRXhlY1N0YXRlICpl
eGVjKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgVXNlck9iamVjdEltcDo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgVXNlck9iamVjdEltcDo6
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKGZKU1VzZXJPYmplY3QpCi0gICAg
ICAgIGZKU1VzZXJPYmplY3QtPk1hcmsoKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0
b3IpOworfQorCit2b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVc2VyT2JqZWN0SW1wKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8VXNlck9iamVjdEltcCo+KGNlbGwpOworICAgIEpTT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5mSlNV
c2VyT2JqZWN0KQorICAgICAgICB0aGlzT2JqZWN0LT5mSlNVc2VyT2JqZWN0LT5NYXJrKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291
cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCA0M2ZmMGRhOGQ3NTZhZmU2
ZmYzZDdjODYzOWE5ZDMxM2FhZDA1YmJiLi5hODZiNTJjYjM2M2E4ZDdlMDE0ZTg4MTJiMzk3ZmFj
N2RjYzU4NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdElt
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTYyLDcg
KzYyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSAq
ZXhlYykgY29uc3Q7CiAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhl
YykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYp
OworICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgIEpTVXNlck9iamVjdCAqR2V0SlNVc2VyT2JqZWN0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyNjNmMTI1NTNjNDkyZDI2Mzc0NjEyZTE2ZmJmNTlhOTdlODIzOWFhLi44NThkOGFhYWYyMDFl
NTAwMjkyMmRjM2E5M2JmMTA3ZjBmM2MyNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBA
CisyMDExLTA5LTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
CisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBqdXN0IGV4dHJhY3QgdGhlIGJvZGllcyBvZiB0
aGUgdmlydHVhbCB2aXNpdENoaWxkcmVuIG1ldGhvZHMKKyAgICAgICAgdGhyb3VnaG91dCB0aGUg
SlNDZWxsIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBvdXQgaW50byBzdGF0aWMgbWV0aG9kcywgd2hp
Y2ggYXJlIAorICAgICAgICBub3cgY2FsbGVkIGZyb20gdGhlIHZpcnR1YWwgbWV0aG9kcy4gIFRo
aXMgaXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4gdHJ5aW5nIHRvIAorICAgICAgICBtb3ZlIHRo
ZSB2aXJ0dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJlbiBpbnRvIG91ciBvd24gY3VzdG9tIHZ0YWJs
ZSBzdG9yZWQgaW4gCisgICAgICAgIENsYXNzSW5mby4gIFdlIG5lZWQgdG8gY29udmVydCB0aGUg
bWV0aG9kcyB0byBzdGF0aWMgbWV0aG9kcyBpbiBvcmRlciB0byBiZSAKKyAgICAgICAgYWJsZSB0
byBtb3JlIGVhc2lseSBzdG9yZSBhbmQgcmVmZXIgdG8gdGhlbSBpbiBvdXIgY3VzdG9tIHZ0YWJs
ZSBzaW5jZSBub3JtYWwgCisgICAgICAgIG1lbWJlciBtZXRob2RzIHN0b3JlIHNvbWUgaW1wbGlj
aXQgaW5mb3JtYXRpb24gaW4gdGhlaXIgdHlwZXMsIG1ha2luZyBpdCAKKyAgICAgICAgaW1wb3Nz
aWJsZSB0byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5IGluIENsYXNzSW5mby4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVu
U3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xh
cmF0aW9uOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01H
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlw
dEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3Jp
cHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdl
Q2hhbm5lbDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFu
bmVsOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRDaGlsZHJl
blN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U05vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdENo
aWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
SlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
U1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
U1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1No
YXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdv
cmtlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdHls
ZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW5T
dGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpK
U1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWFBhdGhS
ZXN1bHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6
dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuU3RhdGlj
KToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorCiAyMDExLTA5LTIwICBBYXJv
biBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJld29yayBzY3JpcHQgY29u
dGV4dCBjcmVhdGlvbi9yZWxlYXNlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggZGQ3MjQ1ZjYxYmU0NzM2YmI3ZTAzNjYzNWRhNjU1ZGI0MjhiNTM1ZC4uYjA4NmIwYTkxMTcw
MGNjNWE1YzUwZTU2YjFiMjI2MGY2MjhlMDVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTgx
NSw3ICs4MTUsNyBAQCBfX1pON1dlYkNvcmU2RWRpdG9yNmluZGVudEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yN0NvbW1hbmRDMUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yN2NvbW1hbmRFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yN291dGRlbnRFdgotX19aTjdXZWJDb3JlNkpTTm9k
ZTEzdmlzaXRDaGlsZHJlbkVSTjNKU0MxMVNsb3RWaXNpdG9yRQorX19aTjdXZWJDb3JlNkpTTm9k
ZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4zSlNDMTFTbG90VmlzaXRvckUKIF9fWk43V2ViQ29y
ZTZKU05vZGUzcHV0RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNW
YWx1ZUVSTlMxXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9F
CiBfX1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0NDlhNWNlMTI3NzlmZDY4NjMwZTM2ZTMwNWMw
Y2MxODkxZmJhNzFmLi4zYjEwODZkNTc0Zjk2Nzc3ZDQyOTRlMDE5ZGEzMTg4NjhmYWNhYjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKQEAgLTM5LDE0
ICszOSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLXZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
dm9pZCBKU0F0dHI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0F0dHI6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F0dHIqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0F0dHIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+b3duZXJF
bGVtZW50KCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+b3du
ZXJFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGM4ZTFlY2U4MWVl
ZDIxNGJkNDJlY2FjNWQ0MGQzOWRkYmFlZjM0ODcuLjRlNmE0NmQzMTU2NzQ3ZjY5NzEyYzRjMmZi
NTNhMjljMWEzYmU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDEzICszOSwxOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNBdWRpb0NvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQXVkaW9Db250ZXh0Ojp2
aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBdWRpb0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvQ29udGV4dCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQXVkaW9Db250ZXh0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnZpc2l0SlNFdmVudExpc3Rl
bmVycyh2aXNpdG9yKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0F1ZGlv
Q29udGV4dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0F1ZGlvQ29udGV4dChFeGVjU3RhdGUqIGV4
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcApp
bmRleCAxNTViYTZlM2NjNTE1ZDRlZDk1ZWExOWZiNDQyOTM0ZGUwMjI1YzA1Li43MWIwNmNlMWQy
OTY3ODU4OGM3MDYxNWRiMmUxZjBlZjVkOWI2ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKQEAgLTQ4LDEzICs0OCwxOSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNDU1NSdWxlOjp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0NTU1J1bGU6OnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2
aXNpdG9yKTsKK30KKwordm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NTU1J1bGUqIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxKU0NTU1J1bGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZs
YWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhv
dXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
LSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwogfQogCiBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDU1NSdWxlKiBydWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNDY1ZTc4MzRhNWQ2MGVj
NjJhMGZhNGE4ZDhlY2U0NDJiZmFkMmUxNC4uY2Q5YWNlZThkMTg0ZjIwM2Y5ZmI4MjdmZTJiZTAw
MjhlNTY1NjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC00MywxMyArNDMsMTkgQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNDU1NTdHls
ZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpKTsKIH0K
IAogLy8gQ2hlY2sgZm9yIGEgQ1NTIHByZWZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmlu
ZGV4IGFkNjQ2YTA1MzI4MjcyNWJhMDkyYzU4MjMyMTZmN2YwNWQ5ZmM0NjEuLmRhNjAyOGMwODY2
NjM1NWUyNDIyMDZjMjYxODZiMjkzMDY4OTY1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cApAQCAtMzksMTQgKzM5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAK
LSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCktPmNhbnZhcygpKSk7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpLT5jYW52YXMoKSkp
OwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDcxZDk4YzkxYTU3ZDdiNjEzMzE3ZGE2YTdiNDgxMjU0NzA1MTQyMGMuLjUyODY3ZDMwYTg2
NzkwMTljYzE4YjM4YjQ4NTJkNmFiZTI2NThhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU1LDIzICs1NSwyOSBAQCB2b2lk
IEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTT2JqZWN0KiB0aGlzVgogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAK
LXZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
cywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9p
ZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogCi0gICAgSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IHN0
cnVjdHVyZXMoKS5lbmQoKTsKLSAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBp
dCA9IHN0cnVjdHVyZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgSlNET01TdHJ1
Y3R1cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZXMoKS5lbmQoKTsK
KyAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN0
cnVjdHVyZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZpdC0+c2Vjb25kKTsKIAotICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVu
ZDIgPSBjb25zdHJ1Y3RvcnMoKS5lbmQoKTsKLSAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6
Oml0ZXJhdG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBlbmQyOyArK2l0
MikKKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0gdGhpc09iamVjdC0+
Y29uc3RydWN0b3JzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVy
YXRvciBpdDIgPSB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS5iZWdpbigpOyBpdDIgIT0gZW5k
MjsgKytpdDIpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdDItPnNlY29uZCk7CiAKLSAgICBp
ZiAobV9pbmplY3RlZFNjcmlwdCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW5qZWN0ZWRT
Y3JpcHQpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KQorICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCk7CiB9CiAKIHZvaWQg
SlNET01HbG9iYWxPYmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXgg
OTAwMjgzMDgzNGUwZjMwYjFiZTBkNDJmODE2YjkyZTkzMTI1OTRjMC4uOTlhNjMxZmM5MzY5OGE3
OWIyY2I3MGMxNDRlYTJlMTdlZTZhMDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC02NCw3ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCopOwogICAgICAg
ICBKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAK
ICAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IGNiNDFkYmNlMWVjYzg4Y2ExNGVkYzViNTMzYTY4MDQyMjNkNmM1ZDcuLmMwOWFk
Zjc4ZGE2YmU3ZDhiYTZiMzA0YWMwNmMxODk3NGNmNWI5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc3LDE1ICs3NywyMSBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNE
T01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTRE9N
V2luZG93Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RPTVdpbmRv
dyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCkp
CisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7
CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAxNTg4ZDRmZWQwMjFl
ZTZjYzY2ZmY1MzliOGYwMDQ2YTNlYmQ5NGE3Li5lMTA2Njg4Y2JkZGQwYTU0ZmVjMTNiNjc2OTUx
OTk5MjYxNGJjMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcApAQCAtODMsMTQgKzgzLDIwIEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6
c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAvLyBKU09iamVjdCBt
ZXRob2RzCiAvLyAtLS0tCiAKLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NV2luZG93U2hlbGwqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fd2luZG93KQotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV93aW5kb3cpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fd2luZG93KQor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aW5kb3cpOwogfQogCiBVU3Ry
aW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggZmU4YTRmZGUwOTE2MjMxZmQz
N2Q2M2ZjYTE0OGQzODdiY2RlMzg4NS4uZTlhYmMxNTgxMmNmNDY3YTBmMjgyNmY2YTMwNThjOThl
OTNmMDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuaApAQCAtNzcsNyArNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QpOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCBK
U0M6OlVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1
c3RvbS5jcHAKaW5kZXggZWJjMjNiMzZjZDNlNDc1NDYzN2U0MjNlN2I2Y2U2YTAyNDk3MTAzZi4u
MDA0ZDhiZTlkYjUyOTdhMzhiY2EwZDYxMzgwZGNmMjRmMTU3ZjMyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0
b20uY3BwCkBAIC0zNCwxMyArMzQsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywg
dmlzaXRvcik7Cit9CisKK3ZvaWQgSlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNKYXZhU2NyaXB0
QXVkaW9Ob2RlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNKYXZhU2NyaXB0QXVkaW9Ob2Rl
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgc3RhdGljX2Nhc3Q8SmF2
YVNjcmlwdEF1ZGlvTm9kZSo+KGltcGwoKSktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9y
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPih0aGlzT2Jq
ZWN0LT5pbXBsKCkpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKaW5kZXggMzRmNTkzMTMzNWZkN2E4YmU3MzMyYWY0
YmM5NGNjNzY5YWQwMmNjZC4uZmExOWM5ZDIyYzBhNmVkOWJmZDdiM2Q2YzQ3Y2QyNGFmMjY4MmMw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5l
bEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hh
bm5lbEN1c3RvbS5jcHAKQEAgLTMyLDE4ICszMiwyNCBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorCit2b2lkIEpTTWVzc2FnZUNoYW5uZWw6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0
Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNNZXNzYWdlQ2hhbm5lbDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgSlNNZXNzYWdlQ2hh
bm5lbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTWVzc2FnZUNoYW5uZWwqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAg
IENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0
KiBwb3J0ID0gbV9pbXBsLT5wb3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRo
aXNPYmplY3QtPm1faW1wbC0+cG9ydDEoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHBvcnQpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5wb3J0MigpKQor
ICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+cG9ydDIoKSkK
ICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDhhZGY0
YTdiYjM4ZWRhMGU0NmI0MDQ0NGY0YWQzOGZiNWNiZjFhMTIuLjllZWQ3MzkwMWNmN2E3OGJhMzdj
MDY0YjIwMTAxNTAwNTNjM2FhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00MiwxOCArNDIsMjQgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTTWVzc2FnZVBvcnQ6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTWVzc2FnZVBvcnQ6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0
aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNZXNzYWdlUG9ydCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTWVzc2FnZVBvcnQqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvY2FsbHkg
ZW50YW5nbGVkIHBvcnQsIHdlIGNhbiBkaXJlY3RseSBtYXJrIGl0IGFzIHJlYWNoYWJsZS4gUG9y
dHMgdGhhdCBhcmUgcmVtb3RlbHkgZW50YW5nbGVkIGFyZSBtYXJrZWQgaW4tdXNlIGJ5IG1hcmtB
Y3RpdmVPYmplY3RzRm9yQ29udGV4dCgpLgotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1f
aW1wbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQg
PSB0aGlzT2JqZWN0LT5tX2ltcGwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIG1faW1wbC0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1l
c3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggNDdmNTZhMjllZjQ0YWNjMDEw
ZjU3NDkyODcxYzZhMGNhZWQ3MDg4ZC4uYTEwZDUyYTE5YTdiMzhiMTM0MDY5NGYyNDUzZmFlODQy
ZDg4NDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5v
ZGVNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcApAQCAtMzUsNiArMzUsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIEpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRo
aXMsIHZpc2l0b3IpOworfQorCiBib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5h
bWUoRXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9T
dHJpbmcocHJvcGVydHlOYW1lKSk7CkBAIC00NiwxOCArNTEsMTkgQEAgSlNWYWx1ZSBKU05hbWVk
Tm9kZU1hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW4KICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwg
dGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5
TmFtZSkpKTsKIH0KIAotdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIEpTTmFtZWROb2RlTWFwKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIHRoZSB3cmFwcGVyIGZvciBv
dXIgdW5kZXJseWluZyBOYW1lZE5vZGVNYXAncyBlbGVtZW50CiAgICAgLy8gYWxpdmUgYmVjYXVz
ZSBOYW1lZE5vZGVNYXAgYW5kIEF0dHIgcmVseSBvbiB0aGUgZWxlbWVudCBmb3IgZGF0YSwgYW5k
CiAgICAgLy8gZG9uJ3Qga25vdyBob3cgdG8ga2VlcCBpdCBhbGl2ZSBjb3JyZWN0bHkuCiAgICAg
Ly8gRklYTUU6IEZpeCB0aGlzIGxpZmV0aW1lIGlzc3VlIGluIHRoZSBET00sIGFuZCByZW1vdmUg
dGhpcy4KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLT5lbGVtZW50KCk7CisgICAgRWxl
bWVudCogZWxlbWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZWxlbWVudCgpOwogICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KGVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
CmluZGV4IDUxZTNiYjg2YWFlZTMyYjVmMjE2NTliZTEzN2M4MmE0NDMyZmRmMTEuLjk3MTUyNjY1
MGFjNGJiYjA0NTE0NTFmYjI2NGU0NDRmYjUxYzQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtMTkyLDE0ICsxOTIsMjAgQEAgU2NvcGVDaGFp
bk5vZGUqIEpTTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW5Ob2RlKiBub2RlKQogICAgIHJldHVybiBub2RlOwogfQogCi12b2lkIEpTTm9kZTo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOb2RlOjp2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgSlNOb2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2RlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNO
b2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIE5v
ZGUqIG5vZGUgPSBtX2ltcGwuZ2V0KCk7CisgICAgTm9kZSogbm9kZSA9IHRoaXNPYmplY3QtPm1f
aW1wbC5nZXQoKTsKICAgICBub2RlLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiAK
ICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAppbmRleCBjMTUxYzU0YzRh
MDJhOTRmNWIyMmQ0M2FhNjZhMmU0MThmZTMyMTQxLi41NjA4MWVjMTM1Njk1Y2IwYjA4MjFjMjZj
Y2Y1MmI3Y2E2NmNiOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUZpbHRlckN1c3RvbS5jcHAKQEAgLTM2LDEzICszNiwxOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU05vZGVGaWx0ZXI6OnZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU05vZGVGaWx0ZXIqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU05vZGVGaWx0ZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpOwogfQogCiBQYXNzUmVmUHRy
PE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVJ
dGVyYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVy
YXRvckN1c3RvbS5jcHAKaW5kZXggMDJkMTA4ZDI0ZjVkZmFhZTA5M2ExZGVjY2E1YjI3NmM3MTM4
OGIwYS4uNzA1NTk0NjJhNTc4ODVkOTY2YjA5NWNhNWYxMzU1ZWIwMDI4MDI1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcApA
QCAtMjksMTQgKzI5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3ZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywg
JnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBK
U05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEpTTm9kZUl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNOb2RlSXRlcmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogCi0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IG1faW1wbC0+ZmlsdGVyKCkpCisgICAg
aWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IHRoaXNPYmplY3QtPm1faW1wbC0+ZmlsdGVyKCkpCiAg
ICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5j
cHAKaW5kZXggZGQyMGZiYTBiNzgzZDAxM2Y0MjRiNTc1MmU1Y2E3ZTg5MDExN2EzNC4uODdlNmJm
NjM5ZDkwZTQzZDc0OTM0MjIzYWNiYThmMDIwN2ExOWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcApA
QCAtMzUsMTMgKzM1LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1NWR0Vs
ZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
dm9pZCBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
SlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqIGNlbGwsIEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTVkdFbGVtZW50SW5zdGFuY2UqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1NWR0VsZW1lbnRJbnN0YW5jZSo+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJv
b3QoaW1wbCgpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSk7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCktPmNvcnJlc3BvbmRpbmdFbGVt
ZW50KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCmluZGV4IDNlMzc5Njkz
N2NkZWE4ZmU1ZDRjNmFiMDdmMjRkZjJlYTllZWY0ZGMuLjlmMzlhMTRlNzVjM2M1NGQ1MTBhMTMz
YzdmNzBhYjI2OGE3NDAwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAgLTQzLDE0ICs0MywyMCBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTaGFyZWRXb3JrZXI6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTU2hhcmVkV29ya2Vy
Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1NoYXJlZFdvcmtl
ciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU2hhcmVkV29ya2VyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IGltcGwoKS0+cG9ydCgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmpl
Y3QtPmltcGwoKS0+cG9ydCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0
b20uY3BwCmluZGV4IDIxZTAwYjE2OGMyMjU0MTE4MTE0ZDJhNDkxZTFlNGUyMDUxMWM2ZTYuLjJk
NzI2YWJiMTdmOGY0ZjM3NDgzYTVhNDAyM2FlM2EwYzY0ODBjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzUsMTMgKzM1
LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lk
IEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2
aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU3R5bGVTaGVldDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
U3R5bGVTaGVldCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU3R5bGVTaGVldCo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVu
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQo
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChy
b290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhp
c09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcApp
bmRleCBkZmYzNDY5Y2UyOTgwNzQ2YTUyMzFlNWQxMzYzOTc0NTBiZmMyNjVjLi45NWVkYzA1YTVh
ODE2NjdjYzZhMWYwMmViOGEzNzlhNzEyZDExMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI4LDE1ICsyOCwyMSBAQAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdm9pZCBK
U1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisKK3ZvaWQg
SlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTVHJlZVdh
bGtlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgSlNU
cmVlV2Fsa2VyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUcmVlV2Fsa2VyKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAg
ICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChOb2RlRmlsdGVy
KiBmaWx0ZXIgPSBtX2ltcGwtPmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIg
PSB0aGlzT2JqZWN0LT5tX2ltcGwtPmZpbHRlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDU5YjYzOTIw
MmVkZTI2MmFhNDEzZTg2ZmIwMDk5NDc0OTkyYzYxZmUuLjI0NTZiN2Q3MTdmNmI4ZGQ4MTBjNzU1
YWJmOGU5Y2NkODQ3YmZmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTE5MiwxMyAr
MTkyLDE5IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAgICAgcmV0dXJuIGpzTnVsbCgpOwog
fQogCi12b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dlYkdMUmVuZGVyaW5nQ29udGV4dCo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChpbXBsKCkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHRoaXNPYmpl
Y3QtPmltcGwoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0
dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4ODdhM2JjMDQ1ZTli
ZDcxYjdkNGYyYjZmMTk5YzMxZDY3ZWQ3MDZiLi5mOTAwNDk2MGI0NWRmNGIxYmY1YmZiMDI5NjM4
ODNjNzFiM2I0MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTUzLDE5ICs1MywyNSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNXb3JrZXJDb250ZXh0Ojp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1dvcmtlckNvbnRleHQ6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0
aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dvcmtlckNvbnRl
eHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckNvbnRleHQqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKFdvcmtlckxvY2F0aW9u
KiBsb2NhdGlvbiA9IGltcGwoKS0+b3B0aW9uYWxMb2NhdGlvbigpKQorICAgIGlmIChXb3JrZXJM
b2NhdGlvbiogbG9jYXRpb24gPSB0aGlzT2JqZWN0LT5pbXBsKCktPm9wdGlvbmFsTG9jYXRpb24o
KSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGxvY2F0aW9uKTsKLSAgICBpZiAoV29y
a2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSBpbXBsKCktPm9wdGlvbmFsTmF2aWdhdG9yKCkpCisg
ICAgaWYgKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gdGhpc09iamVjdC0+aW1wbCgpLT5v
cHRpb25hbE5hdmlnYXRvcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobmF2aWdh
dG9yKTsKIAotICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAg
IHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQog
CiBib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAKaW5kZXggMjU3NTc1NjY2NmRmZTYwZTdhM2QyNGRhN2EwOTFlYTAzM2I5
MWJkMi4uNjA5MTM4MzYxNjg1YTU5YjU1MTBhYTU1ZDE0MWEyYjI0OTUyYTliOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5j
cHAKQEAgLTU0LDI4ICs1NCwzNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3ZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQor
Cit2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hNTEh0dHBSZXF1ZXN0KiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNYTUxIdHRwUmVxdWVzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVwbG9hZCA9
IG1faW1wbC0+b3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQq
IHVwbG9hZCA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxVcGxvYWQoKSkKICAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHVwbG9hZCk7CiAKLSAgICBpZiAoRG9jdW1lbnQqIHJlc3Bv
bnNlRG9jdW1lbnQgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKKyAgICBpZiAoRG9j
dW1lbnQqIHJlc3BvbnNlRG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsUmVz
cG9uc2VYTUwoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlRG9jdW1l
bnQpOwogCi0gICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gbV9pbXBs
LT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKKyAgICBpZiAoQXJyYXlCdWZmZXIqIHJl
c3BvbnNlQXJyYXlCdWZmZXIgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VB
cnJheUJ1ZmZlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocmVzcG9uc2VBcnJh
eUJ1ZmZlcik7CiAKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCi0gICAgaWYgKEJsb2Iq
IHJlc3BvbnNlQmxvYiA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKKyAgICBpZiAo
QmxvYiogcmVzcG9uc2VCbG9iID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNl
QmxvYigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocmVzcG9uc2VCbG9iKTsKICNl
bmRpZgogCi0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAg
dGhpc09iamVjdC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAK
IC8vIEN1c3RvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAKaW5kZXggMzU0ODlkYzQ3YThlMDE0ZWYyNDI2MjM2NDFj
YTFlYTdhYTQ3NDJmNC4uMDk5NDJmNWVlZDA0ZmQzYjFjZmZkMTM1ZDJiMTgyNzlhMWE3MDZhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3Rv
bS5jcHAKQEAgLTM3LDE0ICszNywyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3ZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBKU1hQYXRoUmVzdWx0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNYUGF0aFJlc3VsdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICBjb25zdCBYUGF0aDo6VmFsdWUmIHhwYXRoVmFsdWUgPSBpbXBsKCktPnZhbHVl
KCk7CisgICAgY29uc3QgWFBhdGg6OlZhbHVlJiB4cGF0aFZhbHVlID0gdGhpc09iamVjdC0+aW1w
bCgpLT52YWx1ZSgpOwogICAgIGlmICh4cGF0aFZhbHVlLmlzTm9kZVNldCgpKSB7CiAgICAgICAg
IGNvbnN0IFhQYXRoOjpOb2RlU2V0JiBub2Rlc1RvTWFyayA9IHhwYXRoVmFsdWUudG9Ob2RlU2V0
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZXNUb01hcmsuc2l6ZSgpOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMDk1MjhkNTZiYzU5OTU5NjdkYjFhNDc2MWQwNWI4YWFiN2VmZmU5Yi4u
NTIwM2ZkZjBjNDA3MTg4NmJlY2JkNDYxOGMxMWE2YmM4ZTlkM2Q4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTg3Nyw3
ICs4NzcsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgdmlzaXQgZnVuY3Rpb24KICAg
ICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYpO1xuXG4i
KTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6
OlNsb3RWaXNpdG9yJik7XG5cbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiJ9ID0gMTsKICAgICB9CiAKQEAgLTIyMDAsMjEgKzIyMDEsMjcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tTWFya0Z1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFt
ZX06OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRDaGlsZHJlbih0
aGlzLCB2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOworCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpO1xuIik7
CiAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXZlbnRU
YXJnZXQifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwo
KS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgk
bnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgICAgICBmb3JlYWNoIChAeyRk
YXRhTm9kZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZSA9ICRfOwogICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChtXyIgLiAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWUgLiAiKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fIiAuICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIC4gIilcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tXyIgLiAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBmYzY4M2E1ZGY5
NDU3ZjExMjZiMjk4N2Q5ZmQxNjA1ZjcwYTMxMWYzLi4xMTliNDllMDQwNjkyYTFkOGUzOTBjZGYx
MGUzMDg2ZGNiN2E3YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTg3MCwxNiArMTg3MCwyMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwoRQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTVGVzdE9iajo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
VGVzdE9iaiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2NhY2hlZEF0dHJpYnV0ZTEpCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZEF0dHJpYnV0ZTEpOwotICAgIGlmIChtX2NhY2hl
ZEF0dHJpYnV0ZTIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZEF0dHJpYnV0ZTIp
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMSkKKyAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMSk7CisgICAg
aWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMikKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMik7CiB9CiAKIC8vIENvbnN0YW50IGdl
dHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaAppbmRleCA4ZDUzNDEyZTg2NzYzOTZjNGUxNjIxNTNlMTJjN2QzYjhlNzRkZDFm
Li5mMjlkYzhkNTkyMTM4ZjAzYTI4OWFkYTE2MWQ1YWU4OTA3N2YzZGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC01
Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRBdHRyaWJ1dGUxOwogICAgIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRBdHRyaWJ1dGUyOwotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpOworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAKICAgICAvLyBD
dXN0b20gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAK
aW5kZXggNGJiZTY1ZTAxMTNkYmZjOTg0ZDdhNTQ2NDQ3ZGRlNjVjMDk5MjZhYS4uMjdiZjFjMTVl
OTU0OGUxMzM1NzY4MjE3Y2ZiNjU4YzQyNzYwNWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfaW5zdGFuY2UuY3BwCkBAIC02MiwxMCArNjIsMTYgQEAgcHVibGljOgogICAgIAogICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgUnVudGlt
ZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgUXRJbnN0YW5jZSogaW5z
dGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsK
KyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CisgICAgeworICAgICAgICBRdFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxRdFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICAgICAgUnVudGltZU9iamVjdDo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgUXRJbnN0YW5jZSogaW5zdGFu
Y2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4odGhpc09iamVjdC0+Z2V0SW50ZXJuYWxJbnN0
YW5jZSgpKTsKICAgICAgICAgaWYgKGluc3RhbmNlKQogICAgICAgICAgICAgaW5zdGFuY2UtPnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcAppbmRleCA3M2RkMmJmNTYyZWVmMTJmMjIxYzY2MzI2MDg5Nzk4MzM2ODI4YmYw
Li45NWVhOGQ5MzQ3ZjUyNDYyNWRmNGU2OTI1NWYzZjk0ZDVmNGQ1OTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xNDM5LDEwICsxNDM5LDE2IEBAIHZvaWQg
UXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVuCiAgICAgZC0+bV9hbGxvd1ByaXZhdGUgPSBhbGxvd1ByaXZhdGU7
CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgUXRSdW50aW1lTWV0aG9kOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhvZCk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9k
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFF0UnVudGlt
ZU1ldGFNZXRob2QqPihjZWxsKTsKKyAgICBRdFJ1bnRpbWVNZXRob2Q6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGQgPSB0
aGlzT2JqZWN0LT5kX2Z1bmMoKTsKICAgICBpZiAoZC0+bV9jb25uZWN0KQogICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmZC0+bV9jb25uZWN0KTsKICAgICBpZiAoZC0+bV9kaXNjb25uZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggOTA2ZDEwOGUxZTc2OWIyNTc2YWJl
M2RkMTA2ZDc0MzViOGJmMjg3MC4uZGUyMTNjMjA5ODEyMzFkYWFmZjZmNmNiZWY3MWM5MzVkNWE3
YjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xNjgsNyArMTY4
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGRfZnVuYygpIGNvbnN0IHtyZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSo+KGRfcHRyKTt9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGZmN2I2ZDdmYjU0NTNmYzc1M2E2
MTJjMjE0YzBjZjI5OGJiNzNmNmYuLjhhYzBlZjcwY2FlYWMyYzIwYThhZTFkN2UwODdiNjJkMjVl
YjgwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
ICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIo
KSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgot
ICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNX
b3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJikgaW4KKyAgICAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2VyQ29udGV4
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKSBpbgogICAgICAgICAvLyBKU1dv
cmtlckNvbnRleHRDdXN0b20uY3BwLgogICAgICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFs
TmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KICAgICAgICAg
V29ya2VyTG9jYXRpb24qIG9wdGlvbmFsTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvY2F0
aW9uLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108199</attachid>
            <date>2011-09-21 11:56:44 -0700</date>
            <delta_ts>2011-09-21 18:09:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68404-20110921115643.patch</filename>
            <type>text/plain</type>
            <size>116141</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZk
ODEwNTk2My4uMWRlZmI0ZTVlNTZlMWY1Y2Q1NTM4OTdmYTRiYjU4NTUzNTllNTA4MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5NiwxMyAr
MTk2LDE5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
KHN0YXRpY19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
c19pbmZvKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAgICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlzT2JqZWN0KSksICZKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQYXJlbnQ6OnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgICAgIFBhcmVu
dDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEt
PnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5QYXJl
bnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAg
ICAgdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRv
cik7CiAgICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggMTE5OGUyOTIzZWQwMGQ5YWYyMTZkYmFmZjcxZWMyYzE0MTIxNTVlMy4uZWZl
NjM5ZmRkMDFlYWM1MWQyZTcyNjU1MDE0Y2I4YzExMTA3OTU2YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDExLTA5LTIwICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpT
Q2VsbDo6dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0aGUgYm9kaWVzIG9mIHRo
ZSB2aXJ0dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0aHJvdWdob3V0IHRoZSBK
U0NlbGwgaW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRpYyBtZXRob2RzLCB3aGlj
aCBhcmUgCisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVhbCBtZXRob2RzLiAgVGhp
cyBpcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisgICAgICAgIG1vdmUgdGhl
IHZpcnR1YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93biBjdXN0b20gdnRhYmxl
IHN0b3JlZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0byBjb252ZXJ0IHRoZSBt
ZXRob2RzIHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAorICAgICAgICBhYmxlIHRv
IG1vcmUgZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91ciBjdXN0b20gdnRhYmxl
IHNpbmNlIG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3RvcmUgc29tZSBpbXBsaWNp
dCBpbmZvcm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAorICAgICAgICBpbXBvc3Np
YmxlIHRvIHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZvLgorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBk
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFj
dGl2YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRp
b246OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0
aXZhdGlvbi5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6
ZHJhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjp2aXNp
dENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuU3Rh
dGljKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dldHRl
clNldHRlci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAg
ICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAg
ICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuU3RhdGlj
KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6dmlzaXRD
aGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRp
Yyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0
Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6
CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpT
Y29wZUNoYWluTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogcnVudGltZS9T
Y29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46
OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKwogMjAxMS0wOS0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZmFjdG9yIEhlYXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRp
b25TcGFjZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5k
ZXggNTI4YTUxNDhjZjU3NGU0YmVkYWJlYzVjMjNlMzg2MjVmMTcyMDkzYi4uODRlOWU4ODNjMzI5
YzNiYWU2NzY2ODA2YzkzMjkyN2E0OWQzZDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCkBAIC0xNjMsMTAgKzE2MywxMSBAQCBfX1pOM0pTQzEzU3RhdGVtZW50
Tm9kZTZzZXRMb2NFaWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEwZ2xvYmFsRXhlY0V2CiBf
X1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZUdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEy
ZGVmaW5lU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU184SlNPYmpl
Y3RFagotX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RW
aXNpdG9yRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlND
ZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZhZGRTdGF0
aWNHbG9iYWxzRVBOUzBfMThHbG9iYWxQcm9wZXJ0eUluZm9FaQogX19aTjNKU0MxNEpTR2xvYmFs
T2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxOGdldE93blByb3BlcnR5
U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RF
CitfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOU18xMVNs
b3RWaXNpdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNj
cmlwdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFICAKIF9fWk4z
SlNDMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCkBAIC0xODAsNyArMTgxLDYg
QEAgX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyMTBkaWRUaW1lT3V0RVBOU185RXhlY1N0YXRlRQog
X19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJlc2V0RXYKIF9fWk4zSlNDMTRWVGFibGVTcGVjdHJ1
bTVjb3VudEVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNT
dGF0ZUUKLV9fWk4zSlNDMTVKU1dyYXBwZXJPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xv
dFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUHZSTlNfMTFTbG90VmlzaXRvckUKIF9f
Wk4zSlNDMTVXZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVF
RVB2CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgpAQCAtMjc1LDExICsyNzUsMTEgQEAg
X19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzZSZWdFeHA1bWF0Y2hF
Uk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdFaVBOM1dURjZWZWN0b3JJaUxtMzJFRUUK
IF9fWk4zSlNDNlJlZ0V4cDZjcmVhdGVFUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdF
TlNfMTFSZWdFeHBGbGFnc0UKIF9fWk4zSlNDNlJlZ0V4cEQxRXYKLV9fWk4zSlNDN0pTQXJyYXkx
M3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzdKU0FycmF5MTRmaW5p
c2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzdKU0FycmF5MTRmaW5pc2hD
cmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDN0pTQXJy
YXkxNXNldFN1YmNsYXNzRGF0YUVQdgogX19aTjNKU0M3SlNBcnJheTE4Z2V0T3duUHJvcGVydHlT
bG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzdKU0FycmF5
MjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDN0pTQXJy
YXk2c19pbmZvRQogX19aTjNKU0M3SlNBcnJheTlzZXRMZW5ndGhFagogX19aTjNKU0M3SlNBcnJh
eUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUUKQEAgLTMwOCw3ICszMDgsNyBA
QCBfX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRVBTMF9qCiBfX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lU2V0dGVyRVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBTMF9qCiBfX1pOM0pTQzhKU09iamVjdDEybG9va3Vw
R2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmpl
Y3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKLV9fWk4z
SlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9yRQorX19aTjNKU0M4
SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0b3JFCiBf
X1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3Rh
dGVFagogX19aTjNKU0M4SlNPYmplY3QxNXVud3JhcHBlZE9iamVjdEV2CkBAIC0zMjQsNiArMzI0
LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRl
RWpOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzhKU09iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBO
U185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhKU09iamVjdDE4Z2V0
UHJpbWl0aXZlTnVtYmVyRVBOU185RXhlY1N0YXRlRVJkUk5TXzdKU1ZhbHVlRQogX19aTjNKU0M4
SlNPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVy
dHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCitfX1pOM0pTQzhKU09iamVjdDIwdmlz
aXRDaGlsZHJlblZpcnR1YWxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09iamVjdDIx
Z2V0UHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJO
U18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0MjJmaWxsR2V0dGVyUHJv
cGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQTlNfMTZXcml0ZUJhcnJpZXJCYXNlSU5TXzdV
bmtub3duRUVFCiBfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VFUk5T
XzEySlNHbG9iYWxEYXRhRW1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IGEwZDU0NjgwNjg4YTlhNGU4NDA0ZjlkNjVkNmY2YmMz
N2UwOTY2NWQuLjEwZWI0ZTZmOGU3MjRhYmZjOWM4MGVkYzU1OTM4Njg3YzkxM2IyNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBA
IC0zNzgsMTEgKzM3OCwxMiBAQCBFWFBPUlRTCiAgICAgP3Vud3JhcHBlZE9iamVjdEBKU09iamVj
dEBKU0NAQFVBRVBBVjEyQFhaCiAgICAgP3V0ZjhAVVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdA
V1RGQEBfTkBaCiAgICAgP3ZhbGlkYXRlVmFsdWVATWFya1N0YWNrQEpTQ0BAS0FYVkpTVmFsdWVA
MkBAWgotICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAVUFFWEFBVlNsb3RW
aXNpdG9yQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBKU09iamVjdEBKU0NAQFVBRVhBQVZTbG90
VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5ASlNXcmFwcGVyT2JqZWN0QEpTQ0BARUFF
WEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBTY29wZUNoYWluTm9kZUBK
U0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3Z0YWJsZUFuY2hvckBJbnRlcm5hbEZ1
bmN0aW9uQEpTQ0BARUFFWFhaCisgICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxPYmplY3RASlND
QEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5A
SlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCisgICAgP3Zp
c2l0Q2hpbGRyZW5WaXJ0dWFsQEpTR2xvYmFsT2JqZWN0QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9y
QDJAQFoKKyAgICA/dmlzaXRDaGlsZHJlblZpcnR1YWxASlNPYmplY3RASlNDQEBVQUVYQUFWU2xv
dFZpc2l0b3JAMkBAWgorICAgID92aXNpdENoaWxkcmVuVmlydHVhbEBTY29wZUNoYWluTm9kZUBK
U0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdU
RkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZ
QUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlha
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2
YXRpb24uY3BwCmluZGV4IGFmNmE1NmY5YmUyYTYwNDc4MmM4NTBjMzFlZjU5ZDJmNDBjZGY1MGMu
LmVmOTdiMGZjNTliNDQ1ZmU4MzQ4ZDNkZjQ5MDJlMGRkZTJiZDRjNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBA
IC00MywxNSArNDMsMjEgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OmZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGFjdGkKICAgICBtX2FjdGl2YXRp
b24uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2
YXRpb24pKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBKU09iamVjdDo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU09iamVjdDo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChtX2FjdGl2YXRp
b24pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2FjdGl2YXRpb24pOworICAgIGlmICh0aGlz
T2JqZWN0LT5tX2FjdGl2YXRpb24pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2FjdGl2YXRpb24pOwogfQogCiBVU3RyaW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6Y2xhc3NO
YW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaAppbmRleCBjY2RiZGU4ZjZjYjQwYWI3MTlkNTQ4NmEwYTQ4NTRlNzA4
ZmE5ZjcyLi5iMGMyMGMyY2M5MzlmZDliYzE3NGQ4NTI3ZjgwZDc4MGZhYTI2N2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5o
CkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFj
dGl2YXRpb247CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5jcHAKaW5kZXggZmQ2NjhiZDllZGI2OTgxMWNiYTM5N2VhNzhkY2I3MTI5
NWRjNTI5ZC4uYzM5YzU3ZmM0ZGRkMzAyNjNjNzA3MTU0MGU1MDhkY2FhMTBkOGZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC01OSw3ICs1OSw3IEBAIGlu
bGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCkKIAogICAg
IEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CiAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLnR5cGUoKSA8IENvbXBvdW5kVHlwZSkgewotICAgICAgICBjZWxsLT5KU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOworICAgICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4o
Y2VsbCwgKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MCw3ICs3MCw3IEBA
IGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCkKICNl
bHNlCiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24p
OwogICAgICAgICBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHRydWU7Ci0g
ICAgICAgIGNlbGwtPnZpc2l0Q2hpbGRyZW4oKnRoaXMpOworICAgICAgICBjZWxsLT52aXNpdENo
aWxkcmVuVmlydHVhbCgqdGhpcyk7CiAgICAgICAgIEFTU0VSVChtX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbik7CiAgICAgICAgIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlv
bGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKQEAgLTgwLDcgKzgwLDcgQEAgaW5saW5lIHZvaWQgU2xv
dFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsKQogICAgICAgICBhc0FycmF5KGNl
bGwpLT52aXNpdENoaWxkcmVuRGlyZWN0KCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBjZWxsLT52aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICBjZWxsLT52aXNpdENoaWxkcmVu
VmlydHVhbCgqdGhpcyk7CiB9CiAKIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKQEAgLTExNSw3
ICsxMTUsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAjaWYgRU5BQkxFKFNJTVBMRV9I
RUFQX1BST0ZJTElORykKICAgICAgICAgICAgICAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50
KGNlbGwpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxk
cmVuKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oY2VsbCwg
KnRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewog
ICAgICAgICAgICAgICAgICAgICBtX21hcmtTZXRzLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcAppbmRleCBlYzZjYzhmMWM3MjA3ZGE4M2FmMTUxNDI2YjlmNTgxYjE5ODQ2YzQ5Li5i
ZWYzMGQ4YmIzMThlMmViZTZmZDRjMzRjNDY4OWRmNTkxNjMyZTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTQzLDI1ICs0MywzMSBAQCBBcmd1
bWVudHM6On5Bcmd1bWVudHMoKQogICAgICAgICBkZWxldGUgW10gZC0+ZXh0cmFBcmd1bWVudHM7
CiB9CiAKLXZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQordm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Cisg
ICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBBcmd1bWVudHM6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBB
cmd1bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoZC0+cmVn
aXN0ZXJBcnJheSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoZC0+cmVnaXN0ZXJBcnJh
eS5nZXQoKSwgZC0+bnVtUGFyYW1ldGVycyk7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJlZ2lz
dGVyQXJyYXkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmQtPnJl
Z2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPmQtPm51bVBhcmFtZXRlcnMpOwogCi0gICAg
aWYgKGQtPmV4dHJhQXJndW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bUV4dHJhQXJndW1l
bnRzID0gZC0+bnVtQXJndW1lbnRzIC0gZC0+bnVtUGFyYW1ldGVyczsKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmRWYWx1ZXMoZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4dHJhQXJndW1lbnRzKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVudHMpIHsKKyAgICAgICAgdW5zaWduZWQg
bnVtRXh0cmFBcmd1bWVudHMgPSB0aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHMgLSB0aGlzT2Jq
ZWN0LT5kLT5udW1QYXJhbWV0ZXJzOworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlz
T2JqZWN0LT5kLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0cmFBcmd1bWVudHMpOwogICAgIH0KIAot
ICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5kLT5jYWxsZWUpOwogCi0gICAgaWYgKGQtPmFjdGl2YXRpb24pCi0gICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZkLT5hY3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+YWN0
aXZhdGlvbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmFjdGl2YXRp
b24pOwogfQogCiB2b2lkIEFyZ3VtZW50czo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhl
YywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggNTYxMTNkZmE2MWQwOTIyNWQxY2JjMTljMzlj
ZjMyYTE0MzIzYjY3Mi4uNWUyMzA3NDZkYzNjY2UxM2IzMGY1MTZhZDUyMjY3OWI1YWY5OTk1YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTkwLDcgKzkw
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgICAgICB2b2lkIGZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSosIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKaW5kZXggYWY0ZDJjOTRhNTdkMTM0ZTEwMWIxMGI2YWM3YjAyNGEyNjdkMmU4ZC4uYTg0
MDY5ZjkzMDJiNDdmZTg1MzY4MzAyMDJiNjM1MWY3ZWVlMjU5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIxMSwxNCArMjExLDIwIEBAIEpT
T2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgRXZhbEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEV2YWxFeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBFdmFsRXhl
Y3V0YWJsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAg
ICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIFNj
cmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fZXZhbENv
ZGVCbG9jaykKLSAgICAgICAgbV9ldmFsQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2V2YWxDb2RlQmxv
Y2spCisgICAgICAgIHRoaXNPYmplY3QtPm1fZXZhbENvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7CiB9CiAKIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKQEAgLTM0
MCwxNCArMzQ2LDIwIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKICNl
bmRpZgogfQogCi12b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQor
Cit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX3Byb2dyYW1Db2RlQmxvY2spCi0gICAg
ICAgIG1fcHJvZ3JhbUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKQorICAg
ICAgICB0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0
b3IpOwogfQogCiB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQpAQCAtNTMzLDE4
ICs1NDUsMjQgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30K
Kwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX25hbWVWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fbmFtZVZhbHVlKTsKLSAgICBpZiAobV9jb2RlQmxvY2tGb3JDYWxsKQotICAgICAg
ICBtX2NvZGVCbG9ja0ZvckNhbGwtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIGlmICht
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkKLSAgICAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qt
PnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIFNjcmlwdEV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRo
aXNPYmplY3QtPm1fbmFtZVZhbHVlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9uYW1lVmFsdWUpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwp
CisgICAgICAgIHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQor
ICAgICAgICB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdh
dGUodmlzaXRvcik7CiB9CiAKIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpkaXNjYXJkQ29kZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMDc2NzZh
ZTY2YTk0Y2JmNzJmMTU2OGU2MmNhZmMxNDc1OThiZTA4OC4uMTAxMTZlM2Q0ZWY5MTJlYWY1NWZh
ZWE3NTg4ZGRiYjFkNWM3YmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaApAQCAtMzYyLDcgKzM2Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBF
dmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCk7CiAKICAg
ICAgICAgSlNPYmplY3QqIGNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9k
ZSosIEpJVENvZGU6OkpJVFR5cGUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2b2lkIHVubGlua0NhbGxzKCk7CiAKICAgICAg
ICAgT3duUHRyPEV2YWxDb2RlQmxvY2s+IG1fZXZhbENvZGVCbG9jazsKQEAgLTQyMyw3ICs0MjQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJu
YWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRUeXBlKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAg
dm9pZCB1bmxpbmtDYWxscygpOwogCiAgICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBt
X3Byb2dyYW1Db2RlQmxvY2s7CkBAIC01NjIsNyArNTY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3ltYm9sVGFibGU7IH0KIAogICAgICAgICB2b2lkIGRpc2NhcmRDb2RlKCk7Ci0gICAgICAgIHZv
aWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSosIERlYnVn
Z2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKICAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5k
ZXggOTkwMmI3NjhmMjY4NjY5Yjg5YWI2ZTNkYmUyYjc0MjFjMWUxOTYzNC4uOTE3OTUzNDgwZTUw
NDc0N2FiNGQwNjVjOTY0NWM3ZmZlODA5Y2I1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCkBAIC0zMCwxNiArMzAsMjIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBHZXR0ZXJTZXR0ZXI6OnNfaW5mbyA9IHsgIkdldHRl
clNldHRlciIsIDAsIDAsIDAgfTsKIAotdm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7Ci0KLSAgICBpZiAobV9nZXR0ZXIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2dl
dHRlcik7Ci0gICAgaWYgKG1fc2V0dGVyKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zZXR0
ZXIpOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgR2V0dGVy
U2V0dGVyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgR2V0dGVyU2V0dGVyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8R2V0dGVyU2V0
dGVyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9nZXR0ZXIpCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dldHRlcik7CisgICAgaWYgKHRoaXNP
YmplY3QtPm1fc2V0dGVyKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
ZXR0ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMTljZGJkZGIwMTJhYTI0OTVhNjQyZGIwZjAy
NDhlNzI2YmI1MThmZi4uYTMxMmY3MzBkZDM1ZmMwYmVlYzM4ZDM3MDcxMjVjMzAzMjFhYWMzOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTUz
LDcgKzUzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZ2V0dGVyU2V0
dGVyOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBKU09iamVjdCogZ2V0dGVyKCkgY29uc3QgeyByZXR1
cm4gbV9nZXR0ZXIuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBzZXRHZXR0ZXIoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU09iamVjdCogZ2V0dGVyKSB7IG1fZ2V0dGVyLnNldChnbG9iYWxEYXRh
LCB0aGlzLCBnZXR0ZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcAppbmRleCBkYmM5NjdlMDM2NzZmYTcyNDAzZWVmNjk1ZDU0OTcxYzhmYmQ4
ODVlLi5hNjFkMzcxZmNlNzUxYmMzMTFlZGQ1MjdhODk3ZTJmYTMxZDdiYzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTYzLDIyICs2
MywyOCBAQCBKU0FjdGl2YXRpb246On5KU0FjdGl2YXRpb24oKQogICAgIHN0YXRpY19jYXN0PFNo
YXJlZFN5bWJvbFRhYmxlKj4obV9zeW1ib2xUYWJsZSktPmRlcmVmKCk7CiB9CiAKLXZvaWQgSlNB
Y3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0Fj
dGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FjdGl2
YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gTm8gbmVlZCB0byBtYXJr
IG91ciByZWdpc3RlcnMgaWYgdGhleSdyZSBzdGlsbCBpbiB0aGUgUmVnaXN0ZXJGaWxlLgotICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IG1fcmVnaXN0ZXJBcnJheS5n
ZXQoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyQXJyYXkgPSB0aGlzT2Jq
ZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7CiAgICAgaWYgKCFyZWdpc3RlckFycmF5KQogICAg
ICAgICByZXR1cm47CiAKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5LCBt
X251bVBhcmFtZXRlcnNNaW51c1RoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXksIHRoaXNPYmplY3QtPm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyk7CiAKICAgICAv
LyBTa2lwIHRoZSBjYWxsIGZyYW1lLCB3aGljaCBzaXRzIGJldHdlZW4gdGhlIHBhcmFtZXRlcnMg
YW5kIHZhcnMuCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSArIG1fbnVt
UGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwg
bV9udW1DYXB0dXJlZFZhcnMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJy
YXkgKyB0aGlzT2JqZWN0LT5tX251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3RlckZpbGU6
OkNhbGxGcmFtZUhlYWRlclNpemUsIHRoaXNPYmplY3QtPm1fbnVtQ2FwdHVyZWRWYXJzKTsKIH0K
IAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggZDg2MzU5M2IzMmIxODA0YjYxNmU3
YmE1YmM4YmYxY2M1YTZhNWY5YS4uOTkxMDk3NmQzNGY5OGRiZGNhZGY5ODQyZWMxODAyNzUzNWVm
YmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgK
QEAgLTU1LDcgKzU1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCB+SlNB
Y3RpdmF0aW9uKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RW
aXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYg
cmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAppbmRleCA0YjBjYWEyMjE2ODJmNmM2OGE2MDVlOGFmOWU1NDA2NjU4
YzAzMmNhLi5jODM2NjE1YTEwYmRjN2RjODdlYmJmZmIyN2UzN2JhNzhmOWY0ODhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtODcxLDEyICs4NzEsMTgg
QEAgdm9pZCBKU0FycmF5Ojp1bnNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjLCBpbnQgY291bnQp
CiAgICAgICAgIHZlY3RvcltpXS5jbGVhcigpOwogfQogCi12b2lkIEpTQXJyYXk6OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBKU0FycmF5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJheSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
QXJyYXkqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgdmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICB0aGlzT2JqZWN0LT52aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOwogfQogCiBz
dGF0aWMgaW50IGNvbXBhcmVOdW1iZXJzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9p
ZCogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA1NjYyMjI1
ZTU3Y2QxOTc1M2NkMjk0NmUxYjYyZjU3MjZjMDZkYjQ3Li5lOGZlNzg5NTAyOGRmOTM3MjlhMzAz
NDZmMDBkY2NmNWZmNTk5ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC0xNzIsNyArMTcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZvaWQqIHN1YmNsYXNz
RGF0YSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN1YmNsYXNzRGF0YSh2b2lkKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDZkZjViOTg3OTJmYjUxNTllMmU4
YmJkYTVhZDMwZWMxOGUyOTM3N2MuLjllZTUyMmYwY2U4ZTJiNjVhZmMyZTUyOWZmYTkwY2U1YTQ1
Y2VhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC04NCw3ICs4
NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmco
RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICAvLyBPYmplY3Qgb3Bl
cmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgogICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwpAQCAtMTc2LDkgKzE3NywxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0K
IAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0
dXJlKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAg
ICBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIEpTQ2VsbCogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KGNlbGwpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9zdHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA0MDI2Yzk5Njc5ZmIxNTVkOTljM2QzM2QwMjVhZWM1ZjE1
YzZiMzZkLi41Y2RjZTYyYzM1NGIxNmQ2MmNlNGNkYWMyM2IyZjc2MzBmY2E3MDAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTMxLDE2ICsx
MzEsMjIgQEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBuYW1lKGV4ZWMpOwogfQogCi12b2lkIEpTRnVu
Y3Rpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTRnVuY3Rp
b246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJm1fc2NvcGVDaGFpbik7
Ci0gICAgaWYgKG1fZXhlY3V0YWJsZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZXhlY3V0
YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGVDaGFpbik7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSk7CiB9CiAKIENhbGxUeXBlIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAppbmRleCA2ZTQ3NzMzYmNkZDkzZDc0YmZmMTFmMmE4NDJhODNlYzkw
MzhkMjUwLi41YTdiYjQxYTAxMzE0ZGQwNmU2Yjc1YjYzYzhiYzJjMzgxNzNjOGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNTQsNyArMTU0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1
bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAg
ICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGE3ZjU4ZTRiN2Q1ZDVjY2U4MjIzYmQxOTdhMDJjZWVhYTNm
ODdiYzAuLmIyZjZlNzBiYzM4MjJkMmJjNWNkZTBjYWI1Yjk3ODkxOGJkZTFlMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMw
Niw2NSArMzA2LDcxIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJ
blByb3RvdHlwZUNoYWluLT5zZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgb2JqZWN0UHJvdG90eXBl
KTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywg
JnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreyAKKyAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2dsb2JhbFNjb3BlQ2hhaW4p
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbWV0aG9kQ2FsbER1bW15KTsKLQotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwQ29uc3RydWN0b3IpOwotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fZXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9yYW5nZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX1VSSUVycm9yQ29uc3RydWN0b3IpOwotCi0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9ldmFsRnVuY3Rpb24pOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fY2FsbEZ1
bmN0aW9uKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FwcGx5RnVuY3Rpb24pOwot
Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9vYmplY3RQcm90b3R5cGUpOwotICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJm1fYXJyYXlQcm90b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fYm9vbGVhblByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9zdHJpbmdQcm90b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbnVtYmVy
UHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2RhdGVQcm90b3R5cGUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwUHJvdG90eXBlKTsKLQotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXJndW1lbnRzU3RydWN0dXJlKTsKLSAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX2FycmF5U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKLSAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZtX2RhdGVTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9mdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX251bWJl
ck9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVn
RXhwU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3N0cmluZ09iamVj
dFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlKTsKLQotICAgIGlmIChtX3JlZ2lzdGVyQXJyYXkpIHsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBKU1ZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9nbG9i
YWxTY29wZUNoYWluKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X21ldGhvZENhbGxEdW1teSk7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0
aGlzT2JqZWN0LT5tX2Vycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJnRoaXNPYmplY3QtPm1fZXZhbEVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZmVyZW5jZUVycm9yQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fc3ludGF4
RXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKKworICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Jvb2xlYW5Qcm90b3R5
cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fc3RyaW5nUHJv
dG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX251bWJl
clByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9k
YXRlUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X3JlZ0V4cFByb3RvdHlwZSk7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX2FyZ3VtZW50c1N0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9hcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5j
dGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+
bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25TdHJ1
Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbmFtZWRG
dW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZSk7CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5KSB7
CiAgICAgICAgIC8vIE91dHNpZGUgdGhlIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBv
dXIgdmFyaWFibGVzIGFyZSB0b3JuIG9mZiwKICAgICAgICAgLy8gd2UgY2FuIG1hcmsgdGhlIHRv
cm4tb2ZmIGFycmF5LgotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVyQXJy
YXkuZ2V0KCksIG1fcmVnaXN0ZXJBcnJheVNpemUpOwotICAgIH0gZWxzZSBpZiAobV9yZWdpc3Rl
cnMpIHsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9yZWdpc3Rl
ckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICB9IGVs
c2UgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJzKSB7CiAgICAgICAgIC8vIER1cmluZyBleGVj
dXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUgaW4gdGhlIHJlZ2lz
dGVyIGZpbGUsCiAgICAgICAgIC8vIHRoZSBzeW1ib2wgdGFibGUgdGVsbHMgdXMgaG93IG1hbnkg
dmFyaWFibGVzIHRoZXJlIGFyZSwgYW5kIHJlZ2lzdGVycwogICAgICAgICAvLyBwb2ludHMgdG8g
d2hlcmUgdGhleSBlbmQsIGFuZCB0aGUgcmVnaXN0ZXJzIHVzZWQgZm9yIGV4ZWN1dGlvbiBiZWdp
bi4KLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9yZWdpc3RlcnMgLSBzeW1ib2xUYWJs
ZSgpLnNpemUoKSwgc3ltYm9sVGFibGUoKS5zaXplKCkpOworICAgICAgICB2aXNpdG9yLmFwcGVu
ZFZhbHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVycyAtIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCkuc2l6ZSgpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLnNpemUoKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBlOGEwN2U3MmUyYzY2MmRlNTc4N2U0Yzc2NDQyN2FlYjQwNWM4ZTc5Li5iOWE2NmRhMzg4NTlh
MjljNDVhMzBkYzMwNWMyMDVkNTZjNGE3ZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE3NCw3ICsxNzQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKaW5kZXggMDcwYTUzZTE5ZmM5ZTM3NTg5MzFjMTgxNDBiZjI2NmI5NWE5ZDk1YS4uYTJlOTNl
ODkyNWFkMTZiNmI3M2I2YmE1MzMzZGYzNTNlZDdkNTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNjgsMTUgKzY4LDIxIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzCiAgICAgfQogfQogCi12b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVj
dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFy
a1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247
CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNl
OwogI2VuZGlmCiAKLSAgICB2aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAgIHRoaXNP
YmplY3QtPnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCA1MTM1OTBjMGIwZjJkYmViMzM0OWE0YmYyOGUyZWI5MDUwYTU5ZWZk
Li5iZmRiMjc1MmFiY2E5NmFkNDE4YmJhYjhmMmY3YjY1ZmVkNzQwNGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTc5LDggKzc5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwogICAgICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYpOworICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ICAgICAgICAgLy8gVGhlIGlubGluZSB2aXJ0dWFsIGRlc3RydWN0b3IgY2Fubm90IGJlIHRoZSBm
aXJzdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCiAgICAgICAgIC8vIGluIHRoZSBjbGFzcyBh
cyBpdCByZXN1bHRzIGluIHRoZSB2dGFibGUgYmVpbmcgZ2VuZXJhdGVkIGFzIGEgd2VhayBzeW1i
b2wKQEAgLTgxNiw3ICs4MTcsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwogCiAgICAgUHJvcGVydHlTdG9yYWdlIHN0
b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBzdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA0Yzdh
NmVlOTY3NDU4ZTkxNGE0NzMwZmRlNjRhM2FhNWU0NTEwOTU3Li5lYTQyZDc4ZjBhZDIzYzk1Yjgx
MzY2ZTgyOTBmNWEzMGM1YjMwOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtOTIsMTMgKzkyLDE5
IEBAIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi12
b2lkIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit2b2lkIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9qc1N0cmlu
Z3MuZ2V0KCksIG1fanNTdHJpbmdzU2l6ZSk7Ci0gICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKKyAg
ICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9qc1N0cmluZ3MuZ2V0KCksIHRoaXNPYmpl
Y3QtPm1fanNTdHJpbmdzU2l6ZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZFBy
b3RvdHlwZUNoYWluKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXgg
YTcxOWRlMWNiOGYyNzE2YTc2YTI1ZTVjYTBjMjQ3ZTc3YTc2YWJhMS4uYzZmNjk3OTcyY2E3NTQ2
YjUyYTY0NmIzNzBjOWQwZmY1NzFjODU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtNTgsNyArNTgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAg
IGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNw
cAppbmRleCA1MjA2NTEwZDZjZDJhNzcyNGE3M2I1YmVkMTJhMWYyZDZkOGNjNzE2Li4zMWRhODBh
NzllY2Q2MDdlZTE5OTIyN2IwMmFlN2VkNGZkM2ViMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcApAQCAtMzIsMTMg
KzMyLDE5IEBACiBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNT
dGF0aWNTY29wZU9iamVjdCk7CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1N0YXRpY1Njb3Bl
T2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7
CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NF
UlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAg
ICBKU1ZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3JlZ2lzdGVyU3RvcmUpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTVmFyaWFi
bGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnaXN0ZXJTdG9yZSk7CiB9CiAKIEpTT2JqZWN0KiBK
U1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5oCmluZGV4IDFmOGQ4YjhmZWYzZDhiYzNjMWUyYjViMjAwMTZiMmE1OWY1YzUyNmUuLjgyMTE3
OGE5YWZiODYzYzI2ZTdmZmNlYTZhMmE0ZTA4Y2I4ZWVkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKQEAgLTQxLDcgKzQx
LDggQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgICAgIHJldHVybiBzY29wZU9iamVjdDsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWlj
Q2hlY2tzKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2Jq
ZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKaW5kZXggOGQ2Mzg3ZWMwYWIyMGFkZjdhZmE1M2UxZjEw
ZmRhZDA0MzBmMDFlMi4uNjkxOTJmZTNjZDc4M2RmMTRlMDQ0NTQ5OTkyZGQ5NWRiZjllMDkyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
Y3BwCkBAIC0yNiwxNCArMjYsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoSlNXcmFwcGVyT2JqZWN0KTsKIAotdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAordm9pZCBKU1dyYXBwZXJPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSAKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNXcmFwcGVyT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2ludGVybmFsVmFsdWUpCi0g
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2ludGVybmFsVmFsdWUpOworICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IGlmICh0aGlzT2JqZWN0LT5tX2ludGVybmFsVmFsdWUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsVmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5k
ZXggY2Y0NGUwNGU3ODVkMjRlNDlhMGI5YzU1NzJkNWUxNWMyYTdiNDkzNC4uOTU5NmFhNGUzMjBm
OTI2ZWNlN2YxZmFiNjg0M2VkNGY5YTExZDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAgLTQ1LDcgKzQ1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAgICAgICAgIAogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9p
bnRlcm5hbFZhbHVlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGExMDNjMzc2MTM2MmMy
NTNiNmNlMjhkYTFmMmMwMmE2MWFmNmNkZjcuLmU1ODFkYTlmNDQ5Y2YzOTI0Mzk4NTFhODA2YmUx
OTljNTU1OTQwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zNywxNCArMzcsMjAgQEAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHIKIHsKIH0KIAotdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEludGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7Ci0gICAgaWYgKG1fZXJyb3JTdHJ1Y3R1cmUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBJbnRlcm5hbEZ1bmN0
aW9uOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2Vycm9yU3RydWN0dXJlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9lcnJvclN0cnVjdHVyZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaAppbmRleCBjYzQ2MzViNTBlMDg1NjllZTBkOTVjZjFhODAwNTJkZjk3MGFj
NTAxLi44YzI3MmVhYTJhODY0YzA4MGExZDIxNGRjZjNlYjc2ZjhiZTBhM2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCkBAIC03MCw3ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSW50
ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IGJhZTkwODYxZWE1MzU5MDZiOWVhNTY1
YWM3YWQyYzM0NGMxZTZjNWYuLjEyM2RkNmU5YTE2ZmY2OTJmNmIyNzQ3YmQyMGZkYjJmNzIwZDQx
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cApAQCAtNzgsMTYgKzc4LDIyIEBAIFJlZ0V4cE9iamVjdDo6flJlZ0V4cE9iamVjdCgpCiB7CiB9
CiAKLXZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQordm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBSZWdFeHBPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxSZWdFeHBPYmplY3Qq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAoZC0+cmVnRXhwKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+cmVnRXhwKTsKLSAgICBpZiAoVU5MSUtFTFkoIWQt
Pmxhc3RJbmRleC5nZXQoKS5pc0ludDMyKCkpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+
bGFzdEluZGV4KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5kLT5yZWdFeHApCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5kLT5yZWdFeHApOworICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdC0+ZC0+bGFzdEluZGV4LmdldCgpLmlzSW50MzIoKSkpCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5kLT5sYXN0SW5kZXgpOwogfQogCiBib29sIFJl
Z0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGM5ZmIwMGJmMDkwODNjMmU5
MTU3ODRjYTczZTI2MTVhNGU1MmU3MzAuLjExZTAxOTVlYTk4NTY1Y2E3MTE5ZDA3YTQxNjNmMjNl
MDMzNGRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCkBAIC04Miw3ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgICAgIGJvb2wgbWF0Y2goRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKaW5kZXggZGY0ZGE0MWMwMjEzOTQyNzA2
NTRjMDUxYzZmN2M4ZTUyODg1ZWM2NS4uMTNiNzlkOWIwZGY3OWZjMTE1OTg4NDk1NjQ3OTdlMDJl
ODQ3MzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5j
cHAKQEAgLTY3LDE2ICs2NywyMiBAQCBpbnQgU2NvcGVDaGFpbk5vZGU6OmxvY2FsRGVwdGgoKQog
ICAgIHJldHVybiBzY29wZURlcHRoOwogfQogCi12b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBTY29wZUNoYWluTm9kZTo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxTY29wZUNoYWluTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBpZiAobmV4dCkKLSAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm5leHQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZvYmplY3QpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKCZnbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZn
bG9iYWxUaGlzKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBpZiAodGhpc09iamVjdC0+bmV4dCkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm5leHQpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5vYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5nbG9i
YWxUaGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggZGQ1MDA0YjUwMGE4MmNhYzRlZWFmMmJiYzU3NWI3
OGZkODQ3ZGY0YS4uYWM1MmM2NzdiYjU0MTk2N2I0MDA2OTA2YzNmNGM3NWZlZmVhNDgzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApAQCAtODcsNyArODcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ29tcG91
bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHN0YXRpYyBKU19FWFBP
UlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMzEzYTg1MTg3MTRkNmM1
ZmJhMzU3YjllMzllZDNlZjYyZmM5NGI2Yy4uNGVkZGU5ZjRiZWE5ZWZkOTA1NWNmMjA2MjI1YTkx
ODIzMGEwYWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCkBAIC03MjQsMjYgKzcyNCwzMiBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1l
cyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZUFycmF5JiBwcgogICAgIH0K
IH0KIAotdm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Ci17Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fZ2xvYmFsT2Jq
ZWN0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwotICAgIGlmICht
X3Byb3RvdHlwZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fcHJvdG90eXBlKTsKLSAgICBp
ZiAobV9jYWNoZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4pOwotICAgIGlmIChtX3ByZXZpb3VzKQotICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9wcmV2aW91cyk7Ci0gICAgaWYgKG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAg
ICBpZiAobV9lbnVtZXJhdGlvbkNhY2hlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9lbnVt
ZXJhdGlvbkNhY2hlKTsKLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7Ci0gICAgICAgIFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7Ci0gICAgICAg
IGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgcHRyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdp
bigpOyBwdHIgIT0gZW5kOyArK3B0cikgewordm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywg
dmlzaXRvcik7Cit9CisKK3ZvaWQgU3RydWN0dXJlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgU3RydWN0dXJlKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3Qt
Pm1fZ2xvYmFsT2JqZWN0KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9n
bG9iYWxPYmplY3QpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb3RvdHlwZSkKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvdG90eXBlKTsKKyAgICBpZiAodGhpc09i
amVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIGlmICh0aGlzT2JqZWN0LT5t
X3ByZXZpb3VzKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcmV2aW91
cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9lbnVtZXJhdGlvbkNhY2hlKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lbnVtZXJhdGlvbkNhY2hlKTsKKyAgICBpZiAodGhp
c09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJh
dG9yIGVuZCA9IHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CisgICAgICAgIGZv
ciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9wcm9wZXJ0eVRh
YmxlLT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgaWYgKHB0ci0+
c3BlY2lmaWNWYWx1ZSkKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT5zcGVj
aWZpY1ZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAppbmRleCBkNjA3MzdlNWRmYjIzODAwMGY4ZWE5ZDFlY2M1ZDA2ZTg4MWQ3NTRkLi45
NThhZDFiNzViOGZlNTdiYmI1NmZkZThiYjgzOGY1ZWIyZGY2NjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTMwLDcgKzEzMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3Vw
KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hh
aW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYpOworICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7
CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IEFTU0VSVChzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3ByZXZpb3VzLmdldCgp
OyB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZVRvRmluZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2UwZjAyOGViNzA3YzdlMTE3MTFlODBhZTg0ZjkyOTg4
MzkwOGExNC4uMGZiMjhkZTVmZTdhNmI0MGZiY2VjNjVlNzU0ODM0MTlmMGZjMzZiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcApAQCAt
NDMsMTMgKzQzLDE5IEBAIFN0cnVjdHVyZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4oKQogewogfQog
Ci12b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQordm9pZCBTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFN0
cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgU3RydWN0dXJlQ2hhaW4qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxT
dHJ1Y3R1cmVDaGFpbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CiAgICAgc2l6ZV90IGkgPSAwOwot
ICAgIHdoaWxlIChtX3ZlY3RvcltpXSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fdmVjdG9y
W2krK10pOworICAgIHdoaWxlICh0aGlzT2JqZWN0LT5tX3ZlY3RvcltpXSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdmVjdG9yW2krK10pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCmluZGV4IGNkZDY0ZWY2YTYxYWU0MTQ0MDMzYjA3ZmMxZWMxOTI3MDMxYWRkMGIuLjE5MGM1
YzJmNGU0NDdlY2MyMDkxODJkYWVkODQ1ZTUwZjE5Zjk4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNTIsNyArNTIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBjaGFpbjsKICAgICAgICAgfQogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgp
OyB9Ci0gICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2
b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksICZzX2luZm8pOyB9
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggYTcyYzVjZWQ1OWZiM2Q4YWYz
ZDJjMGMxZTg0MDRjODEzMTNmMmM4Yi4uNzIyNzM3OTgzZGQ5NWUxYjBjZDEzMThlODc2ZjI2MjVm
YzcwODQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEt
MDktMjAgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3RhdGljIHZlcnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVz
dCBleHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2Rz
CisgICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0
IGludG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9t
IHRoZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRy
eWluZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4g
aW50byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8u
ICBXZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3Jk
ZXIgdG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRv
IHRoZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIg
bWV0aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBt
YWtpbmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBp
biBDbGFzc0luZm8uCisKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKKyAgICAgICAgKFVz
ZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoVXNlck9iamVjdEltcDo6dmlz
aXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogVXNlck9iamVjdEltcC5oOgorCiAyMDExLTA5
LTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
VW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVjdG9ycyBpbiBKU0NlbGwgaGll
cmFyY2h5ICg2LzcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXgg
YWQzNjkzYjNhZDEzMDVlMGE5YzI0NmViNmM5OTgxMzM2MWUwZjRiZS4uNmMzYTdkNDk1YWUxNDUx
ZTcxMGZmYTlhMGNhNzA0M2E3YzBhZjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2Jq
ZWN0SW1wLmNwcApAQCAtNDA0LDkgKzQwNCwxNSBAQCBVU3RyaW5nIFVzZXJPYmplY3RJbXA6OnRv
U3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChm
SlNVc2VyT2JqZWN0KQotICAgICAgICBmSlNVc2VyT2JqZWN0LT5NYXJrKCk7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVXNlck9i
amVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFVzZXJPYmplY3RJbXAqPihjZWxsKTsK
KyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBp
ZiAodGhpc09iamVjdC0+ZkpTVXNlck9iamVjdCkKKyAgICAgICAgdGhpc09iamVjdC0+ZkpTVXNl
ck9iamVjdC0+TWFyaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1Vz
ZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5k
ZXggNDNmZjBkYThkNzU2YWZlNmZmM2Q3Yzg2MzlhOWQzMTNhYWQwNWJiYi4uYTg2YjUyY2IzNjNh
OGQ3ZTAxNGU4ODEyYjM5N2ZhYzdkY2M1ODUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5oCkBAIC02Miw3ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSB0
b051bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0
cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNlck9iamVjdCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjEyNTUzYzQ5MmQyNjM3NDYxMmUxNmZiZjU5YTk3ZTgy
MzlhYS4uODU4ZDhhYWFmMjAxZTUwMDI5MjJkYzNhOTNiZjEwN2YwZjNjMjRkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMS0wOS0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRy
YWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAg
ICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8g
c3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2
aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0
byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBv
dXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBu
ZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8g
YmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0g
aW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9k
cyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcg
aXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFz
c0luZm8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
QXR0cjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRp
b0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5T
dGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2aXNp
dENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlblN0YXRp
Yyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2Fn
ZVBvcnQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFt
ZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNpdENo
aWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTm9kZTo6dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0Q2hp
bGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuU3RhdGljKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblN0YXRp
Yyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNo
ZWV0Ojp2aXNpdENoaWxkcmVuU3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVX
YWxrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlblN0
YXRpYyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZp
c2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVu
U3RhdGljKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlblN0YXRpYyk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1hQYXRoUmVzdWx0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYnJpZGdlL3F0
L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW5TdGF0aWMpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1l
LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRob2Q6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhvZDo6
dmlzaXRDaGlsZHJlblN0YXRpYyk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoK
KwogMjAxMS0wOS0yMCAgQWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXdvcmsgc2NyaXB0IGNvbnRleHQgY3JlYXRpb24vcmVsZWFzZSBub3RpZmljYXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGRkNzI0NWY2MWJlNDczNmJiN2UwMzY2MzVkYTY1NWRiNDI4
YjUzNWQuLmIwODZiMGE5MTE3MDBjYzVhNWM1MGU1NmIxYjIyNjBmNjI4ZTA1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC04MTUsNyArODE1LDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjZpbmRl
bnRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjdDb21tYW5kQzFFdgogX19aTjdXZWJDb3JlNkVkaXRv
cjdjb21tYW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNkVkaXRvcjdvdXRkZW50RXYK
LV9fWk43V2ViQ29yZTZKU05vZGUxM3Zpc2l0Q2hpbGRyZW5FUk4zSlNDMTFTbG90VmlzaXRvckUK
K19fWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZp
c2l0b3JFCiBfX1pON1dlYkNvcmU2SlNOb2RlM3B1dEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEw
SWRlbnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk43V2Vi
Q29yZTZKU05vZGU2c19pbmZvRQogX19aTjdXZWJDb3JlNlJlZ2lvbjV1bml0ZUVSS1MwXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKaW5kZXggNDQ5YTVjZTEy
Nzc5ZmQ2ODYzMGUzNmUzMDVjMGNjMTg5MWZiYTcxZi4uM2IxMDg2ZDU3NGY5Njc3N2Q0Mjk0ZTAx
OWRhMzE4ODY4ZmFjYWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdHRyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJD
dXN0b20uY3BwCkBAIC0zOSwxNCArMzksMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi12b2lkIEpTQXR0cjo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
SlNBdHRyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNBdHRyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBdHRyKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAg
ICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBpbXBsKCktPm93bmVyRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGVsZW1lbnQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cAppbmRleCBjOGUxZWNlODFlZWQyMTRiZDQyZWNhYzVkNDBkMzlkZGJhZWYzNDg3Li40ZTZhNDZk
MzE1Njc0N2Y2OTcxMmM0YzJmYjUzYTI5YzFhM2JlNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC0zOSwxMyArMzks
MTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IEpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCBKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQXVkaW9Db250ZXh0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdWRpb0NvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0F1ZGlvQ29udGV4
dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIG1faW1wbC0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbXBs
LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNBdWRpb0NvbnRleHRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNBdWRpb0Nv
bnRleHQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggMTU1YmE2ZTNjYzUxNWQ0ZWQ5NWVhMTlmYjQ0MjkzNGRl
MDIyNWMwNS4uNzFiMDZjZTFkMjk2Nzg1ODhjNzA2MTVkYjJlMWYwZWY1ZDliNmRhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCkBAIC00OCwx
MyArNDgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3Zv
aWQgSlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZp
c2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNDU1NSdWxlOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDU1NS
dWxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDU1NSdWxlKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgp
KSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5p
bXBsKCkpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmlu
ZGV4IDQ2NWU3ODM0YTVkNjBlYzYyYTBmYTRhOGQ4ZWNlNDQyYmZhZDJlMTQuLmNkOWFjZWU4ZDE4
NGYyMDNmOWZiODI3ZmUyYmUwMDI4ZTU2NTYxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAt
NDMsMTMgKzQzLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09i
amVjdC0+aW1wbCgpKSk7CiB9CiAKIC8vIENoZWNrIGZvciBhIENTUyBwcmVmaXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAppbmRleCBhZDY0NmEwNTMyODI3MjViYTA5MmM1ODIzMjE2ZjdmMDVk
OWZjNDYxLi5kYTYwMjhjMDg2NjYzNTVlMjQyMjA2YzI2MTg2YjI5MzA2ODk2NTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDE0ICszOSwyMCBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAg
dmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgp
LT5jYW52YXMoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3Qt
PmltcGwoKS0+Y2FudmFzKCkpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcAppbmRleCA3MWQ5OGM5MWE1N2Q3YjYxMzMxN2RhNmE3YjQ4MTI1NDcw
NTE0MjBjLi41Mjg2N2QzMGE4Njc5MDE5Y2MxOGIzOGI0ODUyZDZhYmUyNjU4YWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC01
NSwyMyArNTUsMjkgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogdGhpc1YKICAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOwogfQogCi12b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywg
dmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVj
dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7Ci0gICAgZm9yIChKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmVzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3Ig
aXQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnNlY29uZCk7CiAKLSAgICBKU0RPTUNvbnN0cnVj
dG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3RydWN0b3JzKCkuZW5kKCk7Ci0gICAgZm9yIChK
U0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdDIgPSBjb25zdHJ1Y3RvcnMoKS5iZWdpbigp
OyBpdDIgIT0gZW5kMjsgKytpdDIpCisgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3Ig
ZW5kMiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmVuZCgpOworICAgIGZvciAoSlNET01D
b25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCku
YmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQy
LT5zZWNvbmQpOwogCi0gICAgaWYgKG1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmplY3Rl
ZFNjcmlwdCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5qZWN0ZWRT
Y3JpcHQpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRDdXJyZW50RXZlbnQoRXZl
bnQqIGN1cnJlbnRFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCmluZGV4IDkwMDI4MzA4MzRlMGYzMGIxYmUwZDQyZjgxNmI5MmU5MzEyNTk0
YzAuLjk5YTYzMWZjOTM2OThhNzliMmNiNzBjMTQ0ZWEyZTE3ZWU2YTA5YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtNjQsNyArNjQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHQo
SlNPYmplY3QqKTsKICAgICAgICAgSlNPYmplY3QqIGluamVjdGVkU2NyaXB0KCkgY29uc3Q7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRv
ciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6SlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpOwogCiAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJl
dHVybiBtX3dvcmxkLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBjYjQxZGJjZTFlY2M4OGNhMTRlZGM1YjUzM2E2
ODA0MjIzZDZjNWQ3Li5jMDlhZGY3OGRhNmJlN2Q4YmE2YjMwNGFjMDZjMTg5NzRjZjViOTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CkBAIC03NywxNSArNzcsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQordm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19p
bmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTRE9N
V2luZG93Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRv
dyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpbXBs
KCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKLSAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gaW1wbCgpLT5mcmFtZSgpKQorICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPmZyYW1lKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmcmFtZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAK
aW5kZXggMTU4OGQ0ZmVkMDIxZWU2Y2M2NmZmNTM5YjhmMDA0NmEzZWJkOTRhNy4uZTEwNjY4OGNi
ZGRkMGE1NGZlYzEzYjY3Njk1MTk5OTI2MTRiYzA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTgzLDE0ICs4MywyMCBAQCB2b2lk
IEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2lu
ZG93KQogLy8gSlNPYmplY3QgbWV0aG9kcwogLy8gLS0tLQogCi12b2lkIEpTRE9NV2luZG93U2hl
bGw6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTRE9NV2luZG93
U2hlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTRE9NV2luZG93U2hlbGw6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVs
bCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX3dpbmRvdykK
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fd2luZG93KTsKKyAgICBBU1NFUlQodGhpc09iamVj
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlz
T2JqZWN0LT5tX3dpbmRvdykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
d2luZG93KTsKIH0KIAogVVN0cmluZyBKU0RPTVdpbmRvd1NoZWxsOjpjbGFzc05hbWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4
IGZlOGE0ZmRlMDkxNjIzMWZkMzdkNjNmY2ExNDhkMzg3YmNkZTM4ODUuLmU5YWJjMTU4MTJjZjQ2
N2EwZjI4MjZmNmEzMDU4Yzk4ZTkzZjA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTc3LDcgKzc3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTsKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU0M6Ok92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7
CiAgICAgICAgIHZpcnR1YWwgSlNDOjpVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCmluZGV4IGViYzIzYjM2Y2QzZTQ3NTQ2MzdlNDIz
ZTdiNmNlNmEwMjQ5NzEwM2YuLjAwNGQ4YmU5ZGI1Mjk3YTM4YmNhMGQ2MTM4MGRjZjI0ZjE1N2Yz
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1
ZGlvTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcApAQCAtMzQsMTMgKzM0LDE5IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0phdmFTY3JpcHRBdWRp
b05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTSmF2YVNj
cmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2
aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxh
Z3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91
dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwot
ICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPihpbXBsKCkpLT52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBzdGF0aWNfY2FzdDxKYXZhU2NyaXB0
QXVkaW9Ob2RlKj4odGhpc09iamVjdC0+aW1wbCgpKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCmluZGV4IDM0ZjU5
MzEzMzVmZDdhOGJlNzMzMmFmNGJjOTRjYzc2OWFkMDJjY2QuLmZhMTljOWQyMmMwYTZlZDliZmQ3
YjNkNmM0N2NkMjRhZjI2ODJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0zMiwxOCArMzIsMjQgQEAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXZvaWQgSlNN
ZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKKwordm9p
ZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpT
TWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OworICAgIEpTTWVzc2FnZUNoYW5uZWwqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU01lc3Nh
Z2VDaGFubmVsKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0Zs
YWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJU
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAot
ICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1faW1wbC0+cG9ydDEoKSkKKyAgICBpZiAoTWVz
c2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPnBvcnQxKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9
IG1faW1wbC0+cG9ydDIoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0
LT5tX2ltcGwtPnBvcnQyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmNwcAppbmRleCA4YWRmNGE3YmIzOGVkYTBlNDZiNDA0NDRmNGFkMzhmYjVjYmYxYTEyLi45
ZWVkNzM5MDFjZjdhNzhiYTM3YzA2NGIyMDEwMTUwMDUzYzNhYWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtNDIsMTgg
KzQyLDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
dm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNNZXNzYWdlUG9y
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTWVzc2FnZVBvcnQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU01lc3NhZ2VQb3J0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAgIC8vIElm
IHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGlyZWN0bHkgbWFyayBp
dCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFuZ2xlZCBhcmUgbWFy
a2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4KLSAgICBpZiAoTWVz
c2FnZVBvcnQqIHBvcnQgPSBtX2ltcGwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkpCisgICAgaWYg
KE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09iamVjdC0+bV9pbXBsLT5sb2NhbGx5RW50YW5nbGVk
UG9ydCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiAKLSAgICBtX2lt
cGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2lt
cGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogSlNDOjpKU1ZhbHVlIEpT
TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4
IDQ3ZjU2YTI5ZWY0NGFjYzAxMGY1NzQ5Mjg3MWM2YTBjYWVkNzA4OGQuLmExMGQ1MmExOWE3YjM4
YjEzNDA2OTRmMjQ1M2ZhZTg0MmQ4ODQ4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKQEAgLTM1LDYgKzM1LDExIEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBKU05hbWVk
Tm9kZU1hcDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwogYm9vbCBKU05hbWVkTm9kZU1h
cDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1wbCwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBpbXBsLT5nZXROYW1l
ZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAtNDYsMTggKzUxLDE5
IEBAIEpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVuCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZp
ZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLXZvaWQgSlNOYW1lZE5vZGVNYXA6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTmFtZWROb2RlTWFwOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICBKU05hbWVkTm9k
ZU1hcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFwKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAgIC8vIFdlIG5lZWQgdG8ga2Vl
cCB0aGUgd3JhcHBlciBmb3Igb3VyIHVuZGVybHlpbmcgTmFtZWROb2RlTWFwJ3MgZWxlbWVudAog
ICAgIC8vIGFsaXZlIGJlY2F1c2UgTmFtZWROb2RlTWFwIGFuZCBBdHRyIHJlbHkgb24gdGhlIGVs
ZW1lbnQgZm9yIGRhdGEsIGFuZAogICAgIC8vIGRvbid0IGtub3cgaG93IHRvIGtlZXAgaXQgYWxp
dmUgY29ycmVjdGx5LgogICAgIC8vIEZJWE1FOiBGaXggdGhpcyBsaWZldGltZSBpc3N1ZSBpbiB0
aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+
ZWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmVs
ZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA1MWUzYmI4NmFhZWUzMmI1ZjIxNjU5YmUxMzdjODJh
NDQzMmZkZjExLi45NzE1MjY2NTBhYzRiYmIwNDUxNDUxZmIyNjRlNDQ0ZmI1MWM0NTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTE5MiwxNCAr
MTkyLDIwIEBAIFNjb3BlQ2hhaW5Ob2RlKiBKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZTsKIH0KIAot
dm9pZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpT
Tm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxk
cmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTm9kZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9kZSogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICBOb2RlKiBub2RlID0gbV9pbXBsLmdldCgpOworICAgIE5vZGUqIG5v
ZGUgPSB0aGlzT2JqZWN0LT5tX2ltcGwuZ2V0KCk7CiAgICAgbm9kZS0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qobm9kZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5j
cHAKaW5kZXggYzE1MWM1NGM0YTAyYTk0ZjViMjJkNDNhYTY2YTJlNDE4ZmUzMjE0MS4uNTYwODFl
YzEzNTY5NWNiMGIwODIxYzI2Y2NmNTJiN2NhNjZjYjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC0zNiwxMyArMzYsMTkg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpT
Tm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNO
b2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0
Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2Rl
RmlsdGVyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNOb2RlRmlsdGVyKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwo
KSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+aW1wbCgp
KTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmluZGV4IDAyZDEwOGQyNGY1ZGZhYWUw
OTNhMWRlY2NhNWIyNzZjNzEzODhiMGEuLjcwNTU5NDYyYTU3ODg1ZDk2NmIwOTVjYTVmMTM1NWVi
MDAyODAyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0
ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVJ
dGVyYXRvckN1c3RvbS5jcHAKQEAgLTI5LDE0ICsyOSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU05vZGVJdGVyYXRvciogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZUl0ZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSBtX2lt
cGwtPmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB0aGlzT2JqZWN0LT5t
X2ltcGwtPmZpbHRlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50
SW5zdGFuY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVt
ZW50SW5zdGFuY2VDdXN0b20uY3BwCmluZGV4IGRkMjBmYmEwYjc4M2QwMTNmNDI0YjU3NTJlNWNh
N2U4OTAxMTdhMzQuLjg3ZTZiZjYzOWQ5MGU0M2Q3NDkzNDIyM2FjYmE4ZjAyMDdhMTlkZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJ
bnN0YW5jZUN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEpTU1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpT
Qzo6SlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU1ZH
RWxlbWVudEluc3RhbmNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTVkdFbGVtZW50SW5z
dGFuY2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgSlNDOjpPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpOwor
ICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgp
LT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9t
LmNwcAppbmRleCAzZTM3OTY5MzdjZGVhOGZlNWQ0YzZhYjA3ZjI0ZGYyZWE5ZWVmNGRjLi45ZjM5
YTE0ZTc1YzNjNTRkNTEwYTEzM2M3ZjcwYWIyNjhhNzQwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC00MywxNCAr
NDMsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
dm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU2hhcmVkV29y
a2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNTaGFyZWRXb3JrZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1NoYXJlZFdv
cmtlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNW
aXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsK
LSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCktPnBvcnQoKSkKKyAgICBpZiAoTWVzc2FnZVBv
cnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnBvcnQoKSkKICAgICAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCAyMWUwMGIxNjhjMjI1NDExODExNGQyYTQ5
MWUxZTRlMjA1MTFjNmU2Li4yZDcyNmFiYjE3ZjhmNGYzNzQ4M2E1YTQwMjNhZTNhMGM2NDgwY2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3Rv
bS5jcHAKQEAgLTM1LDEzICszNSwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
cywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9p
ZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU1N0eWxlU2hlZXQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1N0eWxlU2hlZXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwogfQogCiBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZVNo
ZWV0KiBzdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJl
ZVdhbGtlckN1c3RvbS5jcHAKaW5kZXggZGZmMzQ2OWNlMjk4MDc0NmE1MjMxZTVkMTM2Mzk3NDUw
YmZjMjY1Yy4uOTVlZGMwNWE1YTgxNjY3Y2M2YTFmMDJlYjhhMzc5YTcxMmQxMTAxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCkBA
IC0yOCwxNSArMjgsMjEgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICAKLXZvaWQgSlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQorCit2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIEpTVHJlZVdhbGtlciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
VHJlZVdhbGtlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAK
LSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gbV9pbXBsLT5maWx0ZXIoKSkKKyAgICBpZiAo
Tm9kZUZpbHRlciogZmlsdGVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5maWx0ZXIoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAppbmRleCA1OWI2MzkyMDJlZGUyNjJhYTQxM2U4NmZiMDA5OTQ3NDk5MmM2MWZlLi4yNDU2
YjdkNzE3ZjZiOGRkODEwYzc1NWFiZjhlOWNjZDg0N2JmZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCkBAIC0xOTIsMTMgKzE5MiwxOSBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgogICAg
IHJldHVybiBqc051bGwoKTsKIH0KIAotdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpOwogfQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggODg3YTNiYzA0NWU5YmQ3MWI3ZDRmMmI2ZjE5OWMzMWQ2N2VkNzA2Yi4uZjkwMDQ5NjBi
NDVkZjRiMWJmNWJmYjAyOTYzODgzYzcxYjNiNDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC01MywxOSArNTMs
MjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3Zv
aWQgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNXb3JrZXJDb250
ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNXb3JrZXJDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXb3JrZXJD
b250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcp
OwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAg
IGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSBpbXBsKCktPm9wdGlvbmFsTG9jYXRpb24o
KSkKKyAgICBpZiAoV29ya2VyTG9jYXRpb24qIGxvY2F0aW9uID0gdGhpc09iamVjdC0+aW1wbCgp
LT5vcHRpb25hbExvY2F0aW9uKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChsb2Nh
dGlvbik7Ci0gICAgaWYgKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gaW1wbCgpLT5vcHRp
b25hbE5hdmlnYXRvcigpKQorICAgIGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IHRo
aXNPYmplY3QtPmltcGwoKS0+b3B0aW9uYWxOYXZpZ2F0b3IoKSkKICAgICAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KG5hdmlnYXRvcik7CiAKLSAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3Rl
bmVycyh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5pbXBsKCktPnZpc2l0SlNFdmVudExpc3Rl
bmVycyh2aXNpdG9yKTsKIH0KIAogYm9vbCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5
U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDI1NzU3NTY2NjZkZmU2MGU3
YTNkMjRkYTdhMDkxZWEwMzNiOTFiZDIuLjYwOTEzODM2MTY4NWE1OWI1NTEwYWE1NWQxNDFhMmIy
NDk1MmE5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC01NCwyOCArNTQsMzQgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0
aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNYTUxIdHRwUmVx
dWVzdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTWE1MSHR0cFJlcXVlc3QqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAg
IENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKFhNTEh0dHBSZXF1
ZXN0VXBsb2FkKiB1cGxvYWQgPSBtX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkpCisgICAgaWYgKFhN
TEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFs
VXBsb2FkKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh1cGxvYWQpOwogCi0gICAg
aWYgKERvY3VtZW50KiByZXNwb25zZURvY3VtZW50ID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNl
WE1MKCkpCisgICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3VtZW50ID0gdGhpc09iamVjdC0+
bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChyZXNwb25zZURvY3VtZW50KTsKIAotICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VB
cnJheUJ1ZmZlciA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkpCisgICAg
aWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gdGhpc09iamVjdC0+bV9pbXBs
LT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9C
TE9CKQotICAgIGlmIChCbG9iKiByZXNwb25zZUJsb2IgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9u
c2VCbG9iKCkpCisgICAgaWYgKEJsb2IqIHJlc3BvbnNlQmxvYiA9IHRoaXNPYmplY3QtPm1faW1w
bC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJlc3BvbnNlQmxvYik7CiAjZW5kaWYKIAotICAgIG1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVu
ZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVu
ZXJzKHZpc2l0b3IpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmluZGV4IDM1NDg5ZGM0
N2E4ZTAxNGVmMjQyNjIzNjQxY2ExZWE3YWE0NzQyZjQuLjA5OTQyZjVlZWQwNGZkM2IxY2ZmZDEz
NWQyYjE4Mjc5YTFhNzA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zNywxNCArMzcsMjAgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTWFBhdGhSZXN1bHQ6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTWFBhdGhSZXN1bHQ6OnZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNYUGF0aFJlc3VsdCogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PEpTWFBhdGhSZXN1bHQqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgY29uc3QgWFBhdGg6OlZhbHVlJiB4cGF0aFZh
bHVlID0gaW1wbCgpLT52YWx1ZSgpOworICAgIGNvbnN0IFhQYXRoOjpWYWx1ZSYgeHBhdGhWYWx1
ZSA9IHRoaXNPYmplY3QtPmltcGwoKS0+dmFsdWUoKTsKICAgICBpZiAoeHBhdGhWYWx1ZS5pc05v
ZGVTZXQoKSkgewogICAgICAgICBjb25zdCBYUGF0aDo6Tm9kZVNldCYgbm9kZXNUb01hcmsgPSB4
cGF0aFZhbHVlLnRvTm9kZVNldCgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5v
ZGVzVG9NYXJrLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDA5NTI4ZDU2YmM1OTk1OTY3ZGIxYTQ3
NjFkMDViOGFhYjdlZmZlOWIuLjUyMDNmZGYwYzQwNzE4ODZiZWNiZDQ2MThjMTFhNmJjOGU5ZDNk
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC04NzcsNyArODc3LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAj
IHZpc2l0IGZ1bmN0aW9uCiAgICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbikgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6
U2xvdFZpc2l0b3ImKTtcblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpO1xuXG4iKTsKICAgICAgICAgJHN0cnVj
dHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4ifSA9IDE7CiAgICAgfQogCkBA
IC0yMjAwLDIxICsyMjAxLDI3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcilcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpcywgJnNfaW5mbyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPmlt
cGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoJG51bUNhY2hlZEF0dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAg
ICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAg
ICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIilcbiIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZt
XyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPm1fIiAu
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpXG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIik7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggZmM2ODNhNWRmOTQ1N2YxMTI2YjI5ODdkOWZkMTYwNWY3MGEzMTFmMy4uMTE5YjQ5
ZTA0MDY5MmExZDhlMzkwY2RmMTBlMzA4NmRjYjdhN2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4NzAs
MTYgKzE4NzAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU1Rlc3RPYmoqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9jYWNo
ZWRBdHRyaWJ1dGUxKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRBdHRyaWJ1dGUx
KTsKLSAgICBpZiAobV9jYWNoZWRBdHRyaWJ1dGUyKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
bV9jYWNoZWRBdHRyaWJ1dGUyKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NhY2hl
ZEF0dHJpYnV0ZTEpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hl
ZEF0dHJpYnV0ZTEpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTIpCisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTIpOwog
fQogCiAvLyBDb25zdGFudCBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggOGQ1MzQxMmU4Njc2Mzk2YzRlMTYy
MTUzZTEyYzdkM2I4ZTc0ZGQxZi4uZjI5ZGM4ZDU5MjEzOGYwM2EyODlhZGExNjFkNWFlODkwNzdm
M2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaApAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1fY2FjaGVkQXR0cmli
dXRlMTsKICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1fY2FjaGVkQXR0cmli
dXRlMjsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3Im
KTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0
b3ImKTsKIAogCiAgICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IDRiYmU2NWUwMTEzZGJmYzk4NGQ3YTU0NjQ0N2RkZTY1
YzA5OTI2YWEuLjI3YmYxYzE1ZTk1NDhlMTMzNTc2ODIxN2NmYjY1OGM0Mjc2MDVhMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcApAQCAtNjIsMTAgKzYyLDE2IEBA
IHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAg
ICAgIFF0SW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGdldElu
dGVybmFsSW5zdGFuY2UoKSk7CisgICAgICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgUXRSdW50aW1lT2JqZWN0KiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CisgICAgICAgIFJ1
bnRpbWVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgICAg
IFF0SW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KHRoaXNPYmpl
Y3QtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAgICAgICAgIGlmIChpbnN0YW5jZSkKICAgICAg
ICAgICAgIGluc3RhbmNlLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKaW5kZXggNzNkZDJiZjU2MmVlZjEyZjIyMWM2
NjMyNjA4OTc5ODMzNjgyOGJmMC4uOTVlYThkOTM0N2Y1MjQ2MjVkZjRlNjkyNTVmM2Y5NGQ1ZjRk
NTkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTQzOSwx
MCArMTQzOSwxNiBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbgogICAgIGQtPm1fYWxsb3dQcml2
YXRlID0gYWxsb3dQcml2YXRlOwogfQogCi12b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFF0UnVu
dGltZU1ldGhvZDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBRV19EKFF0UnVudGltZU1l
dGFNZXRob2QpOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
UXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oY2VsbCk7CisgICAgUXRSdW50aW1lTWV0
aG9kOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIFF0UnVudGltZU1l
dGFNZXRob2REYXRhKiBkID0gdGhpc09iamVjdC0+ZF9mdW5jKCk7CiAgICAgaWYgKGQtPm1fY29u
bmVjdCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmQtPm1fY29ubmVjdCk7CiAgICAgaWYgKGQt
Pm1fZGlzY29ubmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCmluZGV4IDkw
NmQxMDhlMWU3NjliMjU3NmFiZTNkZDEwNmQ3NDM1YjhiZjI4NzAuLmRlMjEzYzIwOTgxMjMxZGFh
ZmY2ZjZjYmVmNzFjOTM1ZDVhN2IwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRp
bWUuaApAQCAtMTY4LDcgKzE2OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZU1ldGFNZXRob2REYXRhKiBkX2Z1
bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZERh
dGEqPihkX3B0cik7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBm
ZjdiNmQ3ZmI1NDUzZmM3NTNhNjEyYzIxNGMwY2YyOThiYjczZjZmLi44YWMwZWY3MGNhZWFjMmMy
MGE4YWUxZDdlMDg3YjYyZDI1ZWI4MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKiB3b3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gbV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmdldCgpOyB9CiAjZW5kaWYKLSAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3Ig
R0MgbWFya2luZy4gU2VlIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpIGluCisgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcu
IFNlZSBKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJikg
aW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcC4KICAgICAgICAgV29ya2Vy
TmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdG9y
LmdldCgpOyB9CiAgICAgICAgIFdvcmtlckxvY2F0aW9uKiBvcHRpb25hbExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhdGlvbi5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>108211</attachid>
            <date>2011-09-21 12:56:27 -0700</date>
            <delta_ts>2011-09-21 12:56:27 -0700</delta_ts>
            <desc>Benchmark results</desc>
            <filename>ToT_visitChildren_SunSpiderV8_20110921_1254_benchReport.txt</filename>
            <type>text/plain</type>
            <size>4534</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyIGFuZCBWOC4KClZNcyB0ZXN0ZWQ6CiJUb1Qi
IGF0IC9Wb2x1bWVzL0RhdGEvV2ViS2l0LXRydWUtY2xlYW4vV2ViS2l0QnVpbGQvUmVsZWFzZS9q
c2MKInZpc2l0Q2hpbGRyZW4iIGF0IC9Wb2x1bWVzL0RhdGEvV2ViS2l0LXZpc2l0Y2hpbGRyZW4v
V2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKCkNvbGxlY3RlZCAzMiBzYW1wbGVzIHBlciBiZW5jaG1h
cmsvVk0sIHdpdGggOCBWTSBpbnZvY2F0aW9ucyBwZXIgYmVuY2htYXJrLiBVc2VkIDEgYmVuY2ht
YXJrIGl0ZXJhdGlvbgpwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNj
LXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVs
CnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29u
ZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgClN1blNwaWRlcjoKICAgM2QtY3ViZSAgICAgICAg
ICAgICAgICAgICAgICAgIDguNzE5NistMC4wNTgyICAgICAgICAgIDguNjM1MSstMC4wNDQxICAg
ICAgIAogICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgOC42MDQyKy0wLjA2NjggICAg
XiAgICAgOC40ODQwKy0wLjA1MTQgICAgICAgXiBkZWZpbml0ZWx5IDEuMDE0MnggZmFzdGVyCiAg
IDNkLXJheXRyYWNlICAgICAgICAgICAgICAgICAgICA4LjQ3MTQrLTAuMDUyOCAgICAgICAgICA4
LjQxNzMrLTAuMDU1NiAgICAgICAKICAgYWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAgICAgIDIu
NTM1NystMC4wMTg0ICAgICAgICAgIDIuNTA3OSstMC4wMTcyICAgICAgICAgbWlnaHQgYmUgMS4w
MTExeCBmYXN0ZXIKICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgMTMuMjA3NSstMC4w
OTM1ICAgID8gICAgMTMuMjgxOCstMC4wODc1ICAgICAgID8KICAgYWNjZXNzLW5ib2R5ICAgICAg
ICAgICAgICAgICAgIDQuMjU2MystMC4wMTc5ICAgICAgICAgIDQuMjIyMistMC4wMjQzICAgICAg
IAogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgMy4xNzkxKy0wLjAyNTQgICAgXiAg
ICAgMy4xMzE3Ky0wLjAxNTEgICAgICAgXiBkZWZpbml0ZWx5IDEuMDE1MXggZmFzdGVyCiAgIGJp
dG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAxLjc1ODArLTAuMDA3NCAgICAgICAgICAxLjc0
NjkrLTAuMDA5NyAgICAgICAKICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgIDUuNjg5
NystMC4wMjkyICAgICAgICAgIDUuNjc3OSstMC4wMzI4ICAgICAgIAogICBiaXRvcHMtYml0d2lz
ZS1hbmQgICAgICAgICAgICAgNC4yMjQyKy0wLjAyNzcgICAgPyAgICAgNC4yMzM0Ky0wLjAyODgg
ICAgICAgPwogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgNS44NTI0Ky0wLjAyOTEg
ICAgICAgICAgNS44Mzg3Ky0wLjAzNTIgICAgICAgCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAg
ICAgICAgICAyLjI3ODQrLTAuMDEzMiAgICA/ICAgICAyLjI4MzkrLTAuMDEyMCAgICAgICA/CiAg
IGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICA3LjIzOTQrLTAuMDM3MiAgICA/ICAgICA3
LjI3ODkrLTAuMDUwNCAgICAgICA/CiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAgICAgICAz
LjAzMzQrLTAuMDIwNSAgICA/ICAgICAzLjA1MzErLTAuMDI0OSAgICAgICA/CiAgIGNyeXB0by1z
aGExICAgICAgICAgICAgICAgICAgICAyLjQwNTUrLTAuMDE4MSAgICA/ICAgICAyLjQzMzYrLTAu
MDE5MSAgICAgICA/IG1pZ2h0IGJlIDEuMDExN3ggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXRvZnRl
ICAgICAgICAgICAgIDExLjIzNjQrLTAuMDc2OCAgICAhICAgIDExLjM3NTIrLTAuMDU5OSAgICAg
ICAhIGRlZmluaXRlbHkgMS4wMTI0eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAgICAg
ICAgICAgIDkuODc5MCstMC4xMDE5ICAgICAgICAgIDkuNzc0NCstMC4xMjQ1ICAgICAgICAgbWln
aHQgYmUgMS4wMTA3eCBmYXN0ZXIKICAgbWF0aC1jb3JkaWMgICAgICAgICAgICAgICAgICAgIDcu
NTgyMystMC4wODc0ICAgICAgICAgIDcuNDM5MSstMC4wNzQyICAgICAgICAgbWlnaHQgYmUgMS4w
MTkyeCBmYXN0ZXIKICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgMTAuNzI2NSstMC4w
NDUwICAgICAgICAgMTAuNjYwMSstMC4wNTM4ICAgICAgIAogICBtYXRoLXNwZWN0cmFsLW5vcm0g
ICAgICAgICAgICAgMi45NjUwKy0wLjAxNjggICAgPyAgICAgMi45ODEyKy0wLjAyMjIgICAgICAg
PwogICByZWdleHAtZG5hICAgICAgICAgICAgICAgICAgICAxMi44MjMzKy0wLjA3NjMgICAgICAg
ICAxMi44MjA2Ky0wLjA4NzQgICAgICAgCiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAg
ICA2LjMwMTYrLTAuMDUwOCAgICAgICAgICA2LjI1OTgrLTAuMDU3NyAgICAgICAKICAgc3RyaW5n
LWZhc3RhICAgICAgICAgICAgICAgICAgIDguMDc2MCstMC4wNTI4ICAgICAgICAgIDguMDIzOSst
MC4wNDYwICAgICAgIAogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAxMy41MzIyKy0w
LjA5MDcgICAgICAgICAxMy40NjMxKy0wLjEwMjYgICAgICAgCiAgIHN0cmluZy11bnBhY2stY29k
ZSAgICAgICAgICAgIDIxLjYyNDYrLTAuMTYxMiAgICBeICAgIDIxLjIzNTkrLTAuMTQxOSAgICAg
ICBeIGRlZmluaXRlbHkgMS4wMTgzeCBmYXN0ZXIKICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAg
ICAgICAgIDcuMjE0OSstMC4wNTEyICAgICAgICAgIDcuMTk5NistMC4wNTMxICAgICAgIAoKICAg
PGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgIDcuNDM5MSstMC4wMTQ3ICAgIF4gICAgIDcu
NDAyMystMC4wMTY1ICAgICAgIF4gZGVmaW5pdGVseSAxLjAwNTB4IGZhc3RlcgogICA8Z2VvbWV0
cmljPiAgICAgICAgICAgICAgICAgICAgNi4xNDMwKy0wLjAwOTggICAgXiAgICAgNi4xMTk5Ky0w
LjAxMjggICAgICAgXiBkZWZpbml0ZWx5IDEuMDAzOHggZmFzdGVyCiAgIDxoYXJtb25pYz4gICAg
ICAgICAgICAgICAgICAgICA0Ljk4NDErLTAuMDA4OSAgICAgICAgICA0Ljk3MDgrLTAuMDEyMSAg
ICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAg
ICAgICAgICB2aXNpdENoaWxkcmVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApW
ODoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgODIuMzgwMystMC40ODEyICAgID8g
ICAgODIuNjcxMystMC40MTQ3ICAgICAgID8KICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAg
ICAyNjcuNDY1MistMS4xNTkzICAgICAgICAyNjcuMjE0NSstMS41MjY3ICAgICAgIAogICBlYXJs
ZXktYm95ZXIgICAgICAgICAgICAgICAgIDExOC40NDE2Ky0wLjYyNDUgICAgXiAgIDExNy4xMDQy
Ky0wLjM5MjcgICAgICAgXiBkZWZpbml0ZWx5IDEuMDExNHggZmFzdGVyCiAgIHJheXRyYWNlICAg
ICAgICAgICAgICAgICAgICAgIDc1LjE5NzArLTAuMzUzMCAgICAgICAgIDc1LjE2OTQrLTAuMjcy
OCAgICAgICAKICAgcmVnZXhwICAgICAgICAgICAgICAgICAgICAgICAxMzIuMDg5MistMC4zNzg2
ICAgICEgICAxMzMuMjI3OSstMC41MzU3ICAgICAgICEgZGVmaW5pdGVseSAxLjAwODZ4IHNsb3dl
cgogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgIDI0My40NDAwKy0wLjc0MDggICAgPyAg
IDI0NS42MjI1Ky0xLjk1MTQgICAgICAgPwogICBzcGxheSAgICAgICAgICAgICAgICAgICAgICAg
IDE0OS45NTA2Ky0xLjA4MjMgICAgPyAgIDE1MC42ODk4Ky0wLjg4NDMgICAgICAgPwoKICAgPGFy
aXRobWV0aWM+ICAgICAgICAgICAgICAgICAxNTIuNzA5MSstMC4yOTg4ICAgID8gICAxNTMuMTAw
MCstMC4zMTQ3ICAgICAgID8KICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAxMzcuODQ2
NCstMC4yNjY2ICAgID8gICAxMzguMTA2MystMC4yMzQ2ICAgICAgID8KICAgPGhhcm1vbmljPiAg
ICAgICAgICAgICAgICAgICAxMjUuMDU0OSstMC4yNTUxICAgID8gICAxMjUuMjE3MistMC4yMTU2
ICAgICAgID8KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAg
ICAgICAgICAgICB2aXNpdENoaWxkcmVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApBbGwgYmVuY2htYXJrczoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgMzguMjUz
OSstMC4wNjMyICAgID8gICAgMzguMzA3OSstMC4wNjU2ICAgICAgID8KICAgPGdlb21ldHJpYz4g
ICAgICAgICAgICAgICAgICAgMTEuODgzOSstMC4wMTUxICAgICAgICAgMTEuODUzMystMC4wMTk0
ICAgICAgIAogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAgNi4yNTg4Ky0wLjAxMTEg
ICAgICAgICAgNi4yNDI0Ky0wLjAxNTAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108264</attachid>
            <date>2011-09-21 18:09:18 -0700</date>
            <delta_ts>2011-09-22 08:19:27 -0700</delta_ts>
            <desc>Fix GTK</desc>
            <filename>bug-68404-20110921180917.patch</filename>
            <type>text/plain</type>
            <size>118535</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2NDYKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBmZGRmY2E0ZmRkMGQzNjBjZWY1MzY3N2E0NTQ0ZDlhYjgyNjc0ZmNkLi41ZmY3
OTgzZjRhNDIwY2YwYTNhNzY3NDIwZjYzNTg2NmFlYzRlMTViIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjEgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3RhdGljIHZl
cnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0IHRoZSBi
b2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAgIHRocm91
Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3RhdGljIG1l
dGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0dWFsIG1l
dGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAKKyAgICAg
ICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIgb3duIGN1
c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVkIHRvIGNv
bnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUgCisgICAg
ICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4gb3VyIGN1
c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBzdG9yZSBz
b21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQgCisgICAg
ICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0luZm8uCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA5LTIw
ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydCBmb3IgZ3RrIHBvcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2
NGY3OWNhOGM0MmVhMzZkODEwNTk2My4uMWRlZmI0ZTVlNTZlMWY1Y2Q1NTM4OTdmYTRiYjU4NTUz
NTllNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKQEAgLTE5NiwxMyArMTk2LDE5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoKHN0YXRpY19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6c19pbmZvKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNp
dG9yKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAg
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlz
T2JqZWN0KSksICZKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQ
YXJlbnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxs
YmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5QYXJlbnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNGU2MGViNDg2NGFlZTBiMmVkYjY0YzQwMGEwOGE5
OTdkZWFkZDY0Mi4uMjczOTA2ZjJjMWVkOGE5MmI1NWRiNjk5NTcwM2U2MzMxYTJiNjQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDExLTA5LTIxICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRp
YyB2ZXJzaW9uIG9mIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0
aGUgYm9kaWVzIG9mIHRoZSB2aXJ0dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0
aHJvdWdob3V0IHRoZSBKU0NlbGwgaW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRp
YyBtZXRob2RzLCB3aGljaCBhcmUgCisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVh
bCBtZXRob2RzLiAgVGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisg
ICAgICAgIG1vdmUgdGhlIHZpcnR1YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93
biBjdXN0b20gdnRhYmxlIHN0b3JlZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0
byBjb252ZXJ0IHRoZSBtZXRob2RzIHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAor
ICAgICAgICBhYmxlIHRvIG1vcmUgZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91
ciBjdXN0b20gdnRhYmxlIHNpbmNlIG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3Rv
cmUgc29tZSBpbXBsaWNpdCBpbmZvcm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAor
ICAgICAgICBpbXBvc3NpYmxlIHRvIHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZv
LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlND
YWxsYmFja09iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0Nh
bGxiYWNrT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01h
cmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBydW50aW1lL0Fy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6R2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6Okdl
dHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVu
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZp
cnR1YWwpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRp
cmVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwp
OgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Nj
b3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTU3RhdGlj
U2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAg
ICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OlJlZ0V4
cE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTY29w
ZUNoYWluTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTY29wZUNo
YWluTm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorCiAyMDEx
LTA5LTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29t
ZSBIZWFwIGNsZWFudXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApp
bmRleCA1MjhhNTE0OGNmNTc0ZTRiZWRhYmVjNWMyM2UzODYyNWYxNzIwOTNiLi44NGU5ZTg4M2Mz
MjljM2JhZTY3NjY4MDZjOTMyOTI3YTQ5ZDNkMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKQEAgLTE2MywxMCArMTYzLDExIEBAIF9fWk4zSlNDMTNTdGF0ZW1l
bnROb2RlNnNldExvY0VpaQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTBnbG9iYWxFeGVjRXYK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lR2V0dGVyRVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVBOU184SlNPYmplY3RFagogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0
MTJkZWZpbmVTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09i
amVjdEVqCi1fX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xv
dFZpc2l0b3JFCitfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZK
U0NlbGxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxNmFkZFN0
YXRpY0dsb2JhbHNFUE5TMF8xOEdsb2JhbFByb3BlcnR5SW5mb0VpCiBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRU5TXzdKU1ZhbHVlRWoKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE4Z2V0T3duUHJvcGVy
dHlTbG90RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xv
dEUKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk5TXzEx
U2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyNGdldE93blByb3BlcnR5RGVz
Y3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURl
c2NyaXB0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUgIAogX19a
TjNKU0MxNEpTR2xvYmFsT2JqZWN0NGluaXRFUE5TXzhKU09iamVjdEUKQEAgLTE4MCw3ICsxODEs
NiBAQCBfX1pOM0pTQzE0VGltZW91dENoZWNrZXIxMGRpZFRpbWVPdXRFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzE0VGltZW91dENoZWNrZXI1cmVzZXRFdgogX19aTjNKU0MxNFZUYWJsZVNwZWN0
cnVtNWNvdW50RVBOU182SlNDZWxsRQogX19aTjNKU0MxNHRocm93VHlwZUVycm9yRVBOU185RXhl
Y1N0YXRlRQotX19aTjNKU0MxNUpTV3JhcHBlck9iamVjdDEzdmlzaXRDaGlsZHJlbkVSTlNfMTFT
bG90VmlzaXRvckUKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXIyNmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzRU5TXzZIYW5kbGVJTlNfN1Vua25vd25FRUVQdlJOU18xMVNsb3RWaXNpdG9yRQog
X19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjhmaW5hbGl6ZUVOU182SGFuZGxlSU5TXzdVbmtub3du
RUVFUHYKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXJEMkV2CkBAIC0yNzUsMTEgKzI3NSwxMSBA
QCBfX1pOM0pTQzZKU0xvY2tDMUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDNlJlZ0V4cDVtYXRj
aEVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmluZ0VpUE4zV1RGNlZlY3RvcklpTG0zMkVF
RQogX19aTjNKU0M2UmVnRXhwNmNyZWF0ZUVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmlu
Z0VOU18xMVJlZ0V4cEZsYWdzRQogX19aTjNKU0M2UmVnRXhwRDFFdgotX19aTjNKU0M3SlNBcnJh
eTEzdmlzaXRDaGlsZHJlbkVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDN0pTQXJyYXkxNGZp
bmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDN0pTQXJyYXkxNGZpbmlz
aENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0M3SlNB
cnJheTE1c2V0U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0FycmF5MThnZXRPd25Qcm9wZXJ0
eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDN0pTQXJy
YXkyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M3SlNB
cnJheTZzX2luZm9FCiBfX1pOM0pTQzdKU0FycmF5OXNldExlbmd0aEVqCiBfX1pOM0pTQzdKU0Fy
cmF5QzFFUk5TXzEySlNHbG9iYWxEYXRhRVBOU185U3RydWN0dXJlRQpAQCAtMzA4LDcgKzMwOCw3
IEBAIF9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFUFMwX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUFMwX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29r
dXBHZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09i
amVjdDEybG9va3VwU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQotX19a
TjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xvdFZpc2l0b3JFCitfX1pOM0pT
QzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUK
IF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVqCiBfX1pOM0pTQzhKU09iamVjdDE1dW53cmFwcGVkT2JqZWN0RXYKQEAgLTMyNCw2ICsz
MjQsNyBAQCBfX1pOM0pTQzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3Rh
dGVFak5TXzdKU1ZhbHVlRWoKIF9fWk4zSlNDOEpTT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RF
UE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpTT2JqZWN0MThn
ZXRQcmltaXRpdmVOdW1iZXJFUE5TXzlFeGVjU3RhdGVFUmRSTlNfN0pTVmFsdWVFCiBfX1pOM0pT
QzhKU09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9w
ZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDOEpTT2JqZWN0MjB2
aXNpdENoaWxkcmVuVmlydHVhbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDOEpTT2JqZWN0
MjFnZXRQcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
Uk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M4SlNPYmplY3QyMmZpbGxHZXR0ZXJQ
cm9wZXJ0eVNsb3RFUk5TXzEyUHJvcGVydHlTbG90RVBOU18xNldyaXRlQmFycmllckJhc2VJTlNf
N1Vua25vd25FRUUKIF9fWk4zSlNDOEpTT2JqZWN0MjNhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUVS
TlNfMTJKU0dsb2JhbERhdGFFbW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggYTBkNTQ2ODA2ODhhOWE0ZTg0MDRmOWQ2NWQ2ZjZi
YzM3ZTA5NjY1ZC4uMTBlYjRlNmY4ZTcyNGFiZmM5YzgwZWRjNTU5Mzg2ODdjOTEzYjI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
QEAgLTM3OCwxMSArMzc4LDEyIEBAIEVYUE9SVFMKICAgICA/dW53cmFwcGVkT2JqZWN0QEpTT2Jq
ZWN0QEpTQ0BAVUFFUEFWMTJAWFoKICAgICA/dXRmOEBVU3RyaW5nQEpTQ0BAUUJFP0FWQ1N0cmlu
Z0BXVEZAQF9OQFoKICAgICA/dmFsaWRhdGVWYWx1ZUBNYXJrU3RhY2tASlNDQEBLQVhWSlNWYWx1
ZUAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxPYmplY3RASlNDQEBVQUVYQUFWU2xv
dFZpc2l0b3JAMkBAWgotICAgID92aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAVUFFWEFBVlNs
b3RWaXNpdG9yQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBKU1dyYXBwZXJPYmplY3RASlNDQEBF
QUVYQUFWU2xvdFZpc2l0b3JAMkBAWgotICAgID92aXNpdENoaWxkcmVuQFNjb3BlQ2hhaW5Ob2Rl
QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/dnRhYmxlQW5jaG9yQEludGVybmFs
RnVuY3Rpb25ASlNDQEBFQUVYWFoKKyAgICA/dmlzaXRDaGlsZHJlbkBKU0dsb2JhbE9iamVjdEBK
U0NAQFNBWFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJl
bkBKU09iamVjdEBKU0NAQFNBWFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKKyAgICA/
dmlzaXRDaGlsZHJlblZpcnR1YWxASlNHbG9iYWxPYmplY3RASlNDQEBVQUVYQUFWU2xvdFZpc2l0
b3JAMkBAWgorICAgID92aXNpdENoaWxkcmVuVmlydHVhbEBKU09iamVjdEBKU0NAQFVBRVhBQVZT
bG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5WaXJ0dWFsQFNjb3BlQ2hhaW5Ob2Rl
QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/d2FpdEBUaHJlYWRDb25kaXRpb25A
V1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgogICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZA
QFlBSElQQVBBWEBaCiAgICAgP3dyaXRhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9O
WFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFj
dGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0
aXZhdGlvbi5jcHAKaW5kZXggYWY2YTU2ZjliZTJhNjA0NzgyYzg1MGMzMWVmNTlkMmY0MGNkZjUw
Yy4uZWY5N2IwZmM1OWI0NDVmZTgzNDhkM2RmNDkwMmUwZGRlMmJkNGM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAK
QEAgLTQzLDE1ICs0MywyMSBAQCB2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogYWN0aQogICAgIG1fYWN0aXZh
dGlvbi5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0
aXZhdGlvbikpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9uKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKG1fYWN0aXZh
dGlvbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fYWN0aXZhdGlvbik7CisgICAgaWYgKHRo
aXNPYmplY3QtPm1fYWN0aXZhdGlvbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fYWN0aXZhdGlvbik7CiB9CiAKIFVTdHJpbmcgRGVidWdnZXJBY3RpdmF0aW9uOjpjbGFz
c05hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5oCmluZGV4IGNjZGJkZThmNmNiNDBhYjcxOWQ1NDg2YTBhNDg1NGU3
MDhmYTlmNzIuLmIwYzIwYzJjYzkzOWZkOWJjMTc0ZDg1MjdmODBkNzgwZmFhMjY3YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
YWN0aXZhdGlvbjsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFzc05hbWUo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCBmZDY2OGJkOWVkYjY5ODExY2JhMzk3ZWE3OGRjYjcx
Mjk1ZGM1MjlkLi5jMzljNTdmYzRkZGQzMDI2M2M3MDcxNTQwZTUwOGRjYWExMGQ4ZmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
aW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsKQogCiAg
ICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKICAgICBpZiAoY2VsbC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpIDwgQ29tcG91bmRUeXBlKSB7Ci0gICAgICAgIGNlbGwtPkpT
Q2VsbDo6dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJl
bihjZWxsLCAqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcwLDcgKzcwLDcg
QEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsKQog
I2Vsc2UKICAgICAgICAgQVNTRVJUKCFtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
bik7CiAgICAgICAgIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdHJ1ZTsK
LSAgICAgICAgY2VsbC0+dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIGNlbGwtPnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKCp0aGlzKTsKICAgICAgICAgQVNTRVJUKG1faXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uKTsKICAgICAgICAgbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgpAQCAtODAsNyArODAsNyBAQCBpbmxpbmUgdm9pZCBT
bG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiAgICAgICAgIGFzQXJyYXko
Y2VsbCktPnZpc2l0Q2hpbGRyZW5EaXJlY3QoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGNlbGwtPnZpc2l0Q2hpbGRyZW4oKnRoaXMpOworICAgIGNlbGwtPnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKCp0aGlzKTsKIH0KIAogdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQpAQCAtMTE1
LDcgKzExNSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKICNpZiBFTkFCTEUoU0lNUExF
X0hFQVBfUFJPRklMSU5HKQogICAgICAgICAgICAgICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291
bnQoY2VsbCk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjZWxsLT5KU0NlbGw6OnZpc2l0Q2hp
bGRyZW4oKnRoaXMpOworICAgICAgICAgICAgICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihjZWxs
LCAqdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVtb3ZlTGFzdCgpOwogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwCmluZGV4IGVjNmNjOGYxYzcyMDdkYTgzYWYxNTE0MjZiOWY1ODFiMTk4NDZjNDku
LmJlZjMwZDhiYjMxOGUyZWJlNmZkNGMzNGM0Njg5ZGY1OTE2MzJlNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtNDMsMjUgKzQzLDMxIEBAIEFy
Z3VtZW50czo6fkFyZ3VtZW50cygpCiAgICAgICAgIGRlbGV0ZSBbXSBkLT5leHRyYUFyZ3VtZW50
czsKIH0KIAotdm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEFyZ3VtZW50czo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEFyZ3VtZW50czo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEFyZ3VtZW50cyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBKU09i
amVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU09i
amVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChkLT5y
ZWdpc3RlckFycmF5KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhkLT5yZWdpc3RlckFy
cmF5LmdldCgpLCBkLT5udW1QYXJhbWV0ZXJzKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+cmVn
aXN0ZXJBcnJheSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+ZC0+
cmVnaXN0ZXJBcnJheS5nZXQoKSwgdGhpc09iamVjdC0+ZC0+bnVtUGFyYW1ldGVycyk7CiAKLSAg
ICBpZiAoZC0+ZXh0cmFBcmd1bWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgbnVtRXh0cmFBcmd1
bWVudHMgPSBkLT5udW1Bcmd1bWVudHMgLSBkLT5udW1QYXJhbWV0ZXJzOwotICAgICAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyhkLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0cmFBcmd1bWVudHMpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5kLT5leHRyYUFyZ3VtZW50cykgeworICAgICAgICB1bnNpZ25l
ZCBudW1FeHRyYUFyZ3VtZW50cyA9IHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cyAtIHRoaXNP
YmplY3QtPmQtPm51bVBhcmFtZXRlcnM7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRo
aXNPYmplY3QtPmQtPmV4dHJhQXJndW1lbnRzLCBudW1FeHRyYUFyZ3VtZW50cyk7CiAgICAgfQog
Ci0gICAgdmlzaXRvci5hcHBlbmQoJmQtPmNhbGxlZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPmQtPmNhbGxlZSk7CiAKLSAgICBpZiAoZC0+YWN0aXZhdGlvbikKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJmQtPmFjdGl2YXRpb24pOworICAgIGlmICh0aGlzT2JqZWN0LT5kLT5h
Y3RpdmF0aW9uKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+YWN0aXZh
dGlvbik7CiB9CiAKIHZvaWQgQXJndW1lbnRzOjpjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBl
eGVjLCBSZWdpc3RlciogYnVmZmVyLCB1aW50MzJfdCBtYXhTaXplKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCA1NjExM2RmYTYxZDA5MjI1ZDFjYmMxOWMz
OWNmMzJhMTQzMjNiNjcyLi41ZTIzMDc0NmRjM2NjZTEzYjMwZjUxNmFkNTIyNjc5YjVhZjk5OTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtOTAsNyAr
OTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIHZvaWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJn
dW1lbnRCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAppbmRleCBhZjRkMmM5NGE1N2QxMzRlMTAxYjEwYjZhYzdiMDI0YTI2N2QyZThkLi5h
ODQwNjlmOTMwMmI0N2ZlODUzNjgzMDIwMmI2MzUxZjdlZWUyNTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjExLDE0ICsyMTEsMjAgQEAg
SlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
LCBTY29wZUNoYWluTm9kZSogc2NvcGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBFdmFsRXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRXZhbEV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEV2YWxF
eGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwog
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAg
U2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9ldmFs
Q29kZUJsb2NrKQotICAgICAgICBtX2V2YWxDb2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0
b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZXZhbENvZGVC
bG9jaykKKyAgICAgICAgdGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKIH0KIAogdm9pZCBFdmFsRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQpAQCAt
MzQwLDE0ICszNDYsMjAgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQog
I2VuZGlmCiB9CiAKLXZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9
CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jaykKLSAg
ICAgICAgbV9wcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2spCisg
ICAgICAgIHRoaXNPYmplY3QtPm1fcHJvZ3JhbUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlz
aXRvcik7CiB9CiAKIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCkBAIC01MzMs
MTggKzU0NSwyNCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29u
c3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZQogICAgIHJldHVybiAwOwogfQog
Ci12b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fbmFtZVZhbHVlKQotICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9uYW1lVmFsdWUpOwotICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAg
ICAgIG1fY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci0gICAgaWYg
KG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQotICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgU2NyaXB0
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+bV9uYW1lVmFsdWUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX25hbWVWYWx1ZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ2Fs
bCkKKyAgICAgICAgdGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsLT52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qp
CisgICAgICAgIHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT52aXNpdEFnZ3Jl
Z2F0ZSh2aXNpdG9yKTsKIH0KIAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRpc2NhcmRDb2Rl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAwNzY3
NmFlNjZhOTRjYmY3MmYxNTY4ZTYyY2FmYzE0NzU5OGJlMDg4Li4xMDExNmUzZDRlZjkxMmVhZjU1
ZmFlYTc1ODhkZGJiMWQ1YzdiYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCkBAIC0zNjIsNyArMzYyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sKTsKIAog
ICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5O
b2RlKiwgSklUQ29kZTo6SklUVHlwZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKIAogICAg
ICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwpAQCAtNDIzLDcgKzQy
NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3Rh
dGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVJbnRl
cm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5cGUpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAg
ICB2b2lkIHVubGlua0NhbGxzKCk7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+
IG1fcHJvZ3JhbUNvZGVCbG9jazsKQEAgLTU2Miw3ICs1NjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9zeW1ib2xUYWJsZTsgfQogCiAgICAgICAgIHZvaWQgZGlzY2FyZENvZGUoKTsKLSAgICAgICAg
dm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVi
dWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApp
bmRleCA5OTAyYjc2OGYyNjg2NjliODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li45MTc5NTM0ODBl
NTA0NzQ3YWI0ZDA2NWM5NjQ1YzdmZmU4MDljYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTMwLDE2ICszMCwyMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEdldHRlclNldHRlcjo6c19pbmZvID0geyAiR2V0
dGVyU2V0dGVyIiwgMCwgMCwgMCB9OwogCi12b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgR2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKLQotICAgIGlmIChtX2dldHRlcikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
Z2V0dGVyKTsKLSAgICBpZiAobV9zZXR0ZXIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3Nl
dHRlcik7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBHZXR0
ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBHZXR0ZXJTZXR0ZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxHZXR0ZXJT
ZXR0ZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2dldHRlcikKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2V0dGVyKTsKKyAgICBpZiAodGhp
c09iamVjdC0+bV9zZXR0ZXIpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3NldHRlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAxOWNkYmRkYjAxMmFhMjQ5NWE2NDJkYjBm
MDI0OGU3MjZiYjUxOGZmLi5hMzEyZjczMGRkMzVmYzBiZWVjMzhkMzcwNzEyNWMzMDMyMWFhYzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAt
NTMsNyArNTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZXR0ZXJT
ZXR0ZXI7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2dldHRlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERh
dGEsIHRoaXMsIGdldHRlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwCmluZGV4IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVkNTQ5NzFjOGZi
ZDg4NWUuLmE2MWQzNzFmY2U3NTFiYzMxMWVkZDUyN2E4OTdlMmZhMzFkN2JjOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNjMsMjIg
KzYzLDI4IEBAIEpTQWN0aXZhdGlvbjo6fkpTQWN0aXZhdGlvbigpCiAgICAgc3RhdGljX2Nhc3Q8
U2hhcmVkU3ltYm9sVGFibGUqPihtX3N5bWJvbFRhYmxlKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBK
U0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpT
QWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQWN0
aXZhdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAgICAvLyBObyBuZWVkIHRvIG1h
cmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZpbGUuCi0g
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5ID0gbV9yZWdpc3RlckFycmF5
LmdldCgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IHRoaXNP
YmplY3QtPm1fcmVnaXN0ZXJBcnJheS5nZXQoKTsKICAgICBpZiAoIXJlZ2lzdGVyQXJyYXkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXks
IG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVn
aXN0ZXJBcnJheSwgdGhpc09iamVjdC0+bV9udW1QYXJhbWV0ZXJzTWludXNUaGlzKTsKIAogICAg
IC8vIFNraXAgdGhlIGNhbGwgZnJhbWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0aGUgcGFyYW1ldGVy
cyBhbmQgdmFycy4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgbV9u
dW1QYXJhbWV0ZXJzTWludXNUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXpl
LCBtX251bUNhcHR1cmVkVmFycyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJB
cnJheSArIHRoaXNPYmplY3QtPm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmls
ZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgdGhpc09iamVjdC0+bV9udW1DYXB0dXJlZFZhcnMpOwog
fQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAppbmRleCBkODYzNTkzYjMyYjE4MDRiNjE2
ZTdiYTViYzhiZjFjYzVhNmE1ZjlhLi45OTEwOTc2ZDM0Zjk4ZGJkY2FkZjk4NDJlYzE4MDI3NTM1
ZWZiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aApAQCAtNTUsNyArNTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIH5K
U0FjdGl2YXRpb24oKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29s
JiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDRiMGNhYTIyMTY4MmY2YzY4YTYwNWU4YWY5ZTU0MDY2
NThjMDMyY2EuLmM4MzY2MTVhMTBiZGM3ZGM4N2ViYmZmYjI3ZTM3YmE3OGY5ZjQ4OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC04NzEsMTIgKzg3MSwx
OCBAQCB2b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBjb3Vu
dCkKICAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNBcnJheSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKLSAgICB2aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIHRoaXNPYmplY3QtPnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CiB9CiAK
IHN0YXRpYyBpbnQgY29tcGFyZU51bWJlcnNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2
b2lkKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDU2NjIy
MjVlNTdjZDE5NzUzY2QyOTQ2ZTFiNjJmNTcyNmMwNmRiNDcuLmU4ZmU3ODk1MDI4ZGY5MzcyOWEz
MDM0NmYwMGRjY2Y1ZmY1OTllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKQEAgLTE3Miw3ICsxNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCogc3ViY2xh
c3NEYXRhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNmRmNWI5ODc5MmZiNTE1OWUy
ZThiYmRhNWFkMzBlYzE4ZTI5Mzc3Yy4uOWVlNTIyZjBjZThlMmI2NWFmYzJlNTI5ZmZhOTBjZTVh
NDVjZWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTg0LDcg
Kzg0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3Qo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIC8vIE9iamVjdCBv
cGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAgICAg
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CkBAIC0xNzYsOSArMTc3LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAg
fQogCi0gICAgaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQorICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1
Y3R1cmUpOworICAgICAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworICAgIH0KKwor
ICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgSlNDZWxsKiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3N0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDQwMjZjOTk2NzlmYjE1NWQ5OWMzZDMzZDAyNWFlYzVm
MTVjNmIzNmQuLjVjZGNlNjJjMzU0YjE2ZDYyY2U0Y2RhYzIzYjJmNzYzMGZjYTcwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMzEsMTYg
KzEzMSwyMiBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFt
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5hbWUoZXhlYyk7CiB9CiAKLXZvaWQgSlNG
dW5jdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNGdW5j
dGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxk
cmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9zY29wZUNoYWlu
KTsKLSAgICBpZiAobV9leGVjdXRhYmxlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9leGVj
dXRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZUNoYWluKTsK
KyAgICBpZiAodGhpc09iamVjdC0+bV9leGVjdXRhYmxlKQorICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKIH0KIAogQ2FsbFR5cGUgSlNGdW5jdGlvbjo6
Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDZlNDc3MzNiY2RkOTNkNzRiZmYxMWYyYTg0MmE4M2Vj
OTAzOGQyNTAuLjVhN2JiNDFhMDEzMTRkZDA2ZTZiNzViNjNjOGJjMmMzODE3M2M4YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE1NCw3ICsxNTQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFy
Z3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTdmNThlNGI3ZDVkNWNjZTgyMjNiZDE5N2EwMmNlZWFh
M2Y4N2JjMC4uYjJmNmU3MGJjMzgyMmQyYmM1Y2RlMGNhYjViOTc4OTE4YmRlMWUxNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MzA2LDY1ICszMDYsNzEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgb2xkTGFz
dEluUHJvdG90eXBlQ2hhaW4tPnNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmplY3RQcm90b3R5
cGUpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7IAorICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKLQotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZ2xvYmFsU2NvcGVDaGFp
bik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9tZXRob2RDYWxsRHVtbXkpOwotCi0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBDb25zdHJ1Y3Rvcik7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9lcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX2V2YWxGdW5jdGlvbik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxs
RnVuY3Rpb24pOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXBwbHlGdW5jdGlvbik7
Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX29iamVjdFByb3RvdHlwZSk7Ci0gICAg
dmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmbV9hcnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9ib29sZWFuUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX3N0cmluZ1Byb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1i
ZXJQcm90b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0ZVByb3RvdHlw
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBQcm90b3R5cGUpOwotCi0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwotICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0ZVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX2Vycm9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX2Z1bmN0aW9uU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX25h
bWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbnVt
YmVyT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9y
ZWdFeHBTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmUpOwotCi0gICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgeworICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2ds
b2JhbFNjb3BlQ2hhaW4pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fbWV0aG9kQ2FsbER1bW15KTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNP
YmplY3QtPm1fcmVnRXhwQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fZXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmdGhpc09iamVjdC0+bV9ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yYW5nZUVycm9yQ29uc3RydWN0b3IpOworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVmZXJlbmNlRXJyb3JDb25z
dHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zeW50
YXhFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0b3IpOworCisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworCisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOworICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYm9vbGVhblByb3Rv
dHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdQ
cm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVt
YmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X2RhdGVQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwUHJvdG90eXBlKTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNP
YmplY3QtPm1fYXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX2FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZ0aGlzT2JqZWN0LT5tX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVy
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9jYWxsYmFja0Z1
bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0
LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJnRoaXNPYmplY3QtPm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7
CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVy
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0
cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX251bWJlck9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N0cmluZ09iamVjdFN0cnVjdHVy
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1
bmN0aW9uU3RydWN0dXJlKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkp
IHsKICAgICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVu
IG91ciB2YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLAogICAgICAgICAvLyB3ZSBjYW4gbWFyayB0aGUg
dG9ybi1vZmYgYXJyYXkuCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJB
cnJheS5nZXQoKSwgbV9yZWdpc3RlckFycmF5U2l6ZSk7Ci0gICAgfSBlbHNlIGlmIChtX3JlZ2lz
dGVycykgeworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lz
dGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheVNpemUpOworICAgIH0g
ZWxzZSBpZiAodGhpc09iamVjdC0+bV9yZWdpc3RlcnMpIHsKICAgICAgICAgLy8gRHVyaW5nIGV4
ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSBpbiB0aGUgcmVn
aXN0ZXIgZmlsZSwKICAgICAgICAgLy8gdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyBob3cgbWFu
eSB2YXJpYWJsZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0
byB3aGVyZSB0aGV5IGVuZCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJl
Z2luLgotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVycyAtIHN5bWJvbFRh
YmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJzIC0gdGhpc09iamVjdC0+c3ltYm9sVGFi
bGUoKS5zaXplKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IGU4YTA3ZTcyZTJjNjYyZGU1Nzg3ZTRjNzY0NDI3YWViNDA1YzhlNzkuLmI5YTY2ZGEzODg1
OWEyOWM0NWEzMGRjMzA1YzIwNWQ1NmM0YTdmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTc0LDcgKzE3NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3QoKTsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAppbmRleCAwNzBhNTNlMTlmYzllMzc1ODkzMWMxODE0MGJmMjY2Yjk1YTlkOTVhLi5hMmU5
M2U4OTI1YWQxNmI2YjczYjZiYTUzMzNkZjM1M2VkN2Q1NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02OCwxNSArNjgsMjEgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENs
YXNzSW5mbyogY2xhc3MKICAgICB9CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVh
bChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisK
K3ZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2Jq
ZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRN
YXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
bjsKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFs
c2U7CiAjZW5kaWYKIAotICAgIHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKIAogI2lmbmRlZiBOREVCVUcK
ICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCmluZGV4IDUxMzU5MGMwYjBmMmRiZWIzMzQ5YTRiZjI4ZTJlYjkwNTBhNTll
ZmQuLmJmZGIyNzUyYWJjYTk2YWQ0MThiYmFiOGYyZjdiNjVmZWQ3NDA0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzksOCArNzksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IAogICAgICAgICAvLyBUaGUgaW5saW5lIHZpcnR1YWwgZGVzdHJ1Y3RvciBjYW5ub3QgYmUgdGhl
IGZpcnN0IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQKICAgICAgICAgLy8gaW4gdGhlIGNsYXNz
IGFzIGl0IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5
bWJvbApAQCAtODE2LDcgKzgxNyw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIAogQUxXQVlT
X0lOTElORSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ug
c3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0
cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDRj
N2E2ZWU5Njc0NThlOTE0YTQ3MzBmZGU2NGEzYWE1ZTQ1MTA5NTcuLmVhNDJkNzhmMGFkMjNjOTVi
ODEzNjZlODI5MGY1YTMwYzViMzA5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC05MiwxMyArOTIs
MTkgQEAgSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAK
LXZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX2pzU3Ry
aW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplKTsKLSAgICBpZiAobV9jYWNoZWRQcm90b3R5cGVD
aGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2pzU3RyaW5ncy5nZXQoKSwgdGhpc09i
amVjdC0+bV9qc1N0cmluZ3NTaXplKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRQcm90
b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRl
eCBhNzE5ZGUxY2I4ZjI3MTZhNzZhMjVlNWNhMGMyNDdlNzdhNzZhYmExLi5jNmY2OTc5NzJjYTc1
NDZiNTJhNjQ2YjM3MGM5ZDBmZjU3MWM4NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC01OCw3ICs1OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5
cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAg
ICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIGludCYgb2Zmc2V0KQogICAgICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
Y3BwCmluZGV4IDUyMDY1MTBkNmNkMmE3NzI0YTczYjViZWQxMmExZjJkNmQ4Y2M3MTYuLjMxZGE4
MGE3OWVjZDYwN2VlMTk5MjI3YjAyYWU3ZWQ0ZmQzZWIxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCkBAIC0zMiwx
MyArMzIsMTkgQEAKIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U1N0YXRpY1Njb3BlT2JqZWN0KTsKIAotdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2
aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU3RhdGljU2Nv
cGVPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJp
YWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdpc3RlclN0b3JlKTsKIH0KIAogSlNPYmplY3Qq
IEpTU3RhdGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmgKaW5kZXggMWY4ZDhiOGZlZjNkOGJjM2MxZTJiNWIyMDAxNmIyYTU5ZjVjNTI2ZS4uODIx
MTc4YTlhZmI4NjNjMjZlN2ZmY2VhNmEyYTRlMDhjYjhlZWRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtNDEsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICAgICAgcmV0dXJuIHNjb3BlT2JqZWN0Owog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNp
dG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFt
aWNDaGVja3MpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3Qo
RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNP
YmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCA4ZDYzODdlYzBhYjIwYWRmN2FmYTUzZTFm
MTBmZGFkMDQzMGYwMWUyLi42OTE5MmZlM2NkNzgzZGYxNGUwNDQ1NDk5OTJkZDk1ZGJmOWUwOTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5jcHAKQEAgLTI2LDE0ICsyNiwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChKU1dyYXBwZXJPYmplY3QpOwogCi12b2lkIEpTV3JhcHBlck9iamVjdDo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikgCit2b2lkIEpTV3JhcHBlck9iamVj
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dyYXBwZXJP
YmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dyYXBwZXJPYmplY3QqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAg
IENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1faW50ZXJuYWxWYWx1ZSkK
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJuYWxWYWx1ZSk7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSkKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApp
bmRleCBjZjQ0ZTA0ZTc4NWQyNGU0OWEwYjljNTU3MmQ1ZTE1YzJhN2I0OTM0Li45NTk2YWE0ZTMy
MGY5MjZlY2U3ZjFmYWI2ODQzZWQ0ZjlhMTFkMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtNDUsNyArNDUsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKICAgICAgICAgCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBt
X2ludGVybmFsVmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTEwM2MzNzYxMzYy
YzI1M2I2Y2UyOGRhMWYyYzAyYTYxYWY2Y2RmNy4uZTU4MWRhOWY0NDljZjM5MjQzOTg1MWE4MDZi
ZTE5OWM1NTU5NDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDE0ICszNywyMCBAQCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cgogewogfQogCi12b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKLSAgICBpZiAobV9lcnJvclN0cnVjdHVyZSkKLSAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEludGVybmFsRnVu
Y3Rpb246OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNP
YmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oCmluZGV4IGNjNDYzNWI1MGUwODU2OWVlMGQ5NWNmMWE4MDA1MmRmOTcw
YWM1MDEuLjhjMjcyZWFhMmE4NjRjMDgwYTFkMjE0ZGNmM2ViNzZmOGJlMGEzYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgKQEAgLTcwLDcgKzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJ
bnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFs
IENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggYmFlOTA4NjFlYTUzNTkwNmI5ZWE1
NjVhYzdhZDJjMzQ0YzFlNmM1Zi4uMTIzZGQ2ZTlhMTZmZjY5MmY2YjI3NDdiZDIwZmRiMmY3MjBk
NDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCkBAIC03OCwxNiArNzgsMjIgQEAgUmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2JqZWN0KCkKIHsK
IH0KIAotdm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFJlZ0V4cE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVj
dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChkLT5yZWdFeHAp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5yZWdFeHApOwotICAgIGlmIChVTkxJS0VMWSgh
ZC0+bGFzdEluZGV4LmdldCgpLmlzSW50MzIoKSkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZk
LT5sYXN0SW5kZXgpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJlZ0V4cCkKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPnJlZ0V4cCk7CisgICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqZWN0LT5kLT5sYXN0SW5kZXguZ2V0KCkuaXNJbnQzMigpKSkKKyAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmxhc3RJbmRleCk7CiB9CiAKIGJvb2wg
UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggYzlmYjAwYmYwOTA4M2My
ZTkxNTc4NGNhNzNlMjYxNWE0ZTUyZTczMC4uMTFlMDE5NWVhOTg1NjVjYTcxMTlkMDdhNDE2M2Yy
M2UwMzM0ZGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKQEAgLTgyLDcgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICAgICAgYm9vbCBtYXRjaChFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAppbmRleCBkZjRkYTQxYzAyMTM5NDI3
MDY1NGMwNTFjNmY3YzhlNTI4ODVlYzY1Li4xM2I3OWQ5YjBkZjc5ZmMxMTU5ODg0OTU2NDc5N2Uw
MmU4NDczM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmNwcApAQCAtNjcsMTYgKzY3LDIyIEBAIGludCBTY29wZUNoYWluTm9kZTo6bG9jYWxEZXB0aCgp
CiAgICAgcmV0dXJuIHNjb3BlRGVwdGg7CiB9CiAKLXZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywg
dmlzaXRvcik7Cit9CisKK3ZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTY29wZUNoYWluTm9kZSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PFNjb3BlQ2hhaW5Ob2RlKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FT
U0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIGlmIChuZXh0KQotICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmbmV4dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm9iamVjdCk7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbE9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
Jmdsb2JhbFRoaXMpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5uZXh0
KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bmV4dCk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmds
b2JhbFRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBkZDUwMDRiNTAwYTgyY2FjNGVlYWYyYmJjNTc1
Yjc4ZmQ4NDdkZjRhLi5hYzUyYzY3N2JiNTQxOTY3YjQwMDY5MDZjM2Y0Yzc1ZmVmZWE0ODNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC04Nyw3ICs4
Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhDb21w
b3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAzMTNhODUxODcxNGQ2
YzVmYmEzNTdiOWUzOWVkM2VmNjJmYzk0YjZjLi40ZWRkZTlmNGJlYTllZmQ5MDU1Y2YyMDYyMjVh
OTE4MjMwYTBhYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTcyNCwyNiArNzI0LDMyIEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5h
bWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkmIHByCiAgICAg
fQogfQogCi12b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKLXsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9nbG9iYWxP
YmplY3QpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7Ci0gICAgaWYg
KG1fcHJvdG90eXBlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9wcm90b3R5cGUpOwotICAg
IGlmIChtX2NhY2hlZFByb3RvdHlwZUNoYWluKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9j
YWNoZWRQcm90b3R5cGVDaGFpbik7Ci0gICAgaWYgKG1fcHJldmlvdXMpCi0gICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZtX3ByZXZpb3VzKTsKLSAgICBpZiAobV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91
cykKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwot
ICAgIGlmIChtX2VudW1lcmF0aW9uQ2FjaGUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Vu
dW1lcmF0aW9uQ2FjaGUpOwotICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgUHJv
cGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKLSAgICAg
ICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5VGFibGUtPmJl
Z2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Cit2b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTdHJ1Y3R1cmUqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9nbG9iYWxPYmplY3QpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2dsb2JhbE9iamVjdCk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvdG90eXBlKQorICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm90b3R5cGUpOworICAgIGlmICh0aGlz
T2JqZWN0LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbik7CisgICAgaWYgKHRoaXNPYmplY3Qt
Pm1fcHJldmlvdXMpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ByZXZp
b3VzKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlv
dXMpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpCisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpOworICAgIGlmICh0
aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRl
cmF0b3IgZW5kID0gdGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKKyAgICAgICAg
Zm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5
VGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICBpZiAocHRy
LT5zcGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZwdHItPnNw
ZWNpZmljVmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCmluZGV4IGQ2MDczN2U1ZGZiMjM4MDAwZjhlYTlkMWVjYzVkMDZlODgxZDc1NGQu
Ljk1OGFkMWI3NWI4ZmU1N2JiYjU2ZmRlOGJiODM4ZjVlYjJkZjY2NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xMzAsNyArMTMwLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29r
dXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVD
aGFpbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0
KCk7IH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVy
ZSogc3RydWN0dXJlVG9GaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCAzZTBmMDI4ZWI3MDdjN2UxMTcxMWU4MGFlODRmOTI5
ODgzOTA4YTE0Li4wZmIyOGRlNWZlN2E2YjQwZmJjZWM2NWU3NTQ4MzQxOWYwZmMzNmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBA
IC00MywxMyArNDMsMTkgQEAgU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCiB7CiB9
CiAKLXZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2lu
Zm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBTdHJ1Y3R1cmVDaGFpbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PFN0cnVjdHVyZUNoYWluKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKICAgICBzaXplX3QgaSA9IDA7
Ci0gICAgd2hpbGUgKG1fdmVjdG9yW2ldKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV92ZWN0
b3JbaSsrXSk7CisgICAgd2hpbGUgKHRoaXNPYmplY3QtPm1fdmVjdG9yW2ldKQorICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV92ZWN0b3JbaSsrXSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgKaW5kZXggY2RkNjRlZjZhNjFhZTQxNDQwMzNiMDdmYzFlYzE5MjcwMzFhZGQwYi4uMTkw
YzVjMmY0ZTQ0N2VjYzIwOTE4MmRhZWQ4NDVlNTBmMTlmOThmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCkBAIC01Miw3ICs1Miw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGNoYWluOwogICAgICAgICB9CiAgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0
KCk7IH0KLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAg
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7
IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhNzJjNWNlZDU5ZmIzZDhh
ZjNkMmMwYzFlODQwNGM4MTMxM2YyYzhiLi5jMDBiMjIyNDExNWY2MzA3MGI3YjgzNWY4ZGU0Yjhk
M2I2N2Q5YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
MS0wOS0yMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBq
dXN0IGV4dHJhY3QgdGhlIGJvZGllcyBvZiB0aGUgdmlydHVhbCB2aXNpdENoaWxkcmVuIG1ldGhv
ZHMKKyAgICAgICAgdGhyb3VnaG91dCB0aGUgSlNDZWxsIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBv
dXQgaW50byBzdGF0aWMgbWV0aG9kcywgd2hpY2ggYXJlIAorICAgICAgICBub3cgY2FsbGVkIGZy
b20gdGhlIHZpcnR1YWwgbWV0aG9kcy4gIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4g
dHJ5aW5nIHRvIAorICAgICAgICBtb3ZlIHRoZSB2aXJ0dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJl
biBpbnRvIG91ciBvd24gY3VzdG9tIHZ0YWJsZSBzdG9yZWQgaW4gCisgICAgICAgIENsYXNzSW5m
by4gIFdlIG5lZWQgdG8gY29udmVydCB0aGUgbWV0aG9kcyB0byBzdGF0aWMgbWV0aG9kcyBpbiBv
cmRlciB0byBiZSAKKyAgICAgICAgYWJsZSB0byBtb3JlIGVhc2lseSBzdG9yZSBhbmQgcmVmZXIg
dG8gdGhlbSBpbiBvdXIgY3VzdG9tIHZ0YWJsZSBzaW5jZSBub3JtYWwgCisgICAgICAgIG1lbWJl
ciBtZXRob2RzIHN0b3JlIHNvbWUgaW1wbGljaXQgaW5mb3JtYXRpb24gaW4gdGhlaXIgdHlwZXMs
IG1ha2luZyBpdCAKKyAgICAgICAgaW1wb3NzaWJsZSB0byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5
IGluIENsYXNzSW5mby4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAo
VXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoVXNlck9iamVj
dEltcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogVXNlck9iamVjdEltcC5oOgorCiAyMDEx
LTA5LTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVjdG9ycyBpbiBKU0NlbGwg
aGllcmFyY2h5ICg2LzcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKaW5k
ZXggYWQzNjkzYjNhZDEzMDVlMGE5YzI0NmViNmM5OTgxMzM2MWUwZjRiZS4uNmMzYTdkNDk1YWUx
NDUxZTcxMGZmYTlhMGNhNzA0M2E3YzBhZjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2Vy
T2JqZWN0SW1wLmNwcApAQCAtNDA0LDkgKzQwNCwxNSBAQCBVU3RyaW5nIFVzZXJPYmplY3RJbXA6
OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlm
IChmSlNVc2VyT2JqZWN0KQotICAgICAgICBmSlNVc2VyT2JqZWN0LT5NYXJrKCk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVXNl
ck9iamVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFVzZXJPYmplY3RJbXAqPihjZWxs
KTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+ZkpTVXNlck9iamVjdCkKKyAgICAgICAgdGhpc09iamVjdC0+ZkpT
VXNlck9iamVjdC0+TWFyaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVl
L1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgK
aW5kZXggNDNmZjBkYThkNzU2YWZlNmZmM2Q3Yzg2MzlhOWQzMTNhYWQwNWJiYi4uYTg2YjUyY2Iz
NjNhOGQ3ZTAxNGU4ODEyYjM5N2ZhYzdkY2M1ODUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNl
ck9iamVjdEltcC5oCkBAIC02Miw3ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJs
ZSB0b051bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgVVN0cmluZyB0
b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNlck9iamVjdCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJiOGYyY2VhOTI3YzliOTZhZDkyZjc1NWY3YTRhMDBh
YzdlM2JkYS4uZjJkM2IxMWVmZWQ4NjVkMzIxYTZlYjFkY2UyMDdiYTkyNWFiMWY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMS0wOS0yMSAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBl
eHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisg
ICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGlu
dG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRo
ZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWlu
ZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50
byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBX
ZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIg
dG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRo
ZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0
aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtp
bmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBD
bGFzc0luZm8uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NT
UnVsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxl
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVj
bGFyYXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01H
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuVmly
dHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlw
dEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNK
YXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2Fn
ZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVz
c2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlz
aXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW5WaXJ0
dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNOb2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU05v
ZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVl
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuVmly
dHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVu
VmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlblZp
cnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
Lmg6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpR
dFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4
dC5oOgorCiAyMDExLTA5LTIxICBEYXZpZCBEZWxhdW5lICA8ZGF2aWQuZGVsYXVuZUBnb29nbGVt
YWlsLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEljb25EYXRhYmFzZTo6ZGVmYXVsdEljb24g
YWx3YXlzIGZhaWxzIGZvciBub24tQ0FOX1RIRU1FX1VSTF9JQ09OIGJ1aWxkcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZGQ3MjQ1ZjYxYmU0NzM2YmI3ZTAzNjYzNWRhNjU1ZGI0MjhiNTM1ZC4u
YjA4NmIwYTkxMTcwMGNjNWE1YzUwZTU2YjFiMjI2MGY2MjhlMDVlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTgxNSw3ICs4MTUsNyBAQCBfX1pON1dlYkNvcmU2RWRpdG9yNmluZGVudEV2CiBf
X1pON1dlYkNvcmU2RWRpdG9yN0NvbW1hbmRDMUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yN2NvbW1h
bmRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yN291dGRlbnRFdgotX19aTjdX
ZWJDb3JlNkpTTm9kZTEzdmlzaXRDaGlsZHJlbkVSTjNKU0MxMVNsb3RWaXNpdG9yRQorX19aTjdX
ZWJDb3JlNkpTTm9kZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4zSlNDMTFTbG90VmlzaXRvckUK
IF9fWk43V2ViQ29yZTZKU05vZGUzcHV0RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlm
aWVyRU5TMV83SlNWYWx1ZUVSTlMxXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlNkpT
Tm9kZTZzX2luZm9FCiBfX1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0NDlhNWNlMTI3NzlmZDY4
NjMwZTM2ZTMwNWMwY2MxODkxZmJhNzFmLi4zYjEwODZkNTc0Zjk2Nzc3ZDQyOTRlMDE5ZGEzMTg4
NjhmYWNhYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5j
cHAKQEAgLTM5LDE0ICszOSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU0F0dHI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5m
byk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0F0dHI6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBKU0F0dHIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0F0dHIqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGlt
cGwoKS0+b3duZXJFbGVtZW50KCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmplY3Qt
PmltcGwoKS0+b3duZXJFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1
cm47CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4
IGM4ZTFlY2U4MWVlZDIxNGJkNDJlY2FjNWQ0MGQzOWRkYmFlZjM0ODcuLjRlNmE0NmQzMTU2NzQ3
ZjY5NzEyYzRjMmZiNTNhMjljMWEzYmU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDEzICszOSwxOSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNBdWRp
b0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQXVk
aW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0
Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBdWRpb0NvbnRleHQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1
ZGlvQ29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQXVkaW9Db250ZXh0Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU0F1ZGlvQ29udGV4dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0F1ZGlvQ29udGV4dChF
eGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1J1bGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxl
Q3VzdG9tLmNwcAppbmRleCAxNTViYTZlM2NjNTE1ZDRlZDk1ZWExOWZiNDQyOTM0ZGUwMjI1YzA1
Li43MWIwNmNlMWQyOTY3ODU4OGM3MDYxNWRiMmUxZjBlZjVkOWI2ZGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKQEAgLTQ4LDEzICs0OCwx
OSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
SlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0NT
U1J1bGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NTU1J1bGUqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NTU1J1bGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAg
ICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKSkp
OwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDU1NSdWxlKiBydWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNDY1
ZTc4MzRhNWQ2MGVjNjJhMGZhNGE4ZDhlY2U0NDJiZmFkMmUxNC4uY2Q5YWNlZThkMTg0ZjIwM2Y5
ZmI4MjdmZTJiZTAwMjhlNTY1NjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC00MywxMyAr
NDMsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKK3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3Zv
aWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgp
KSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5p
bXBsKCkpKTsKIH0KIAogLy8gQ2hlY2sgZm9yIGEgQ1NTIHByZWZpeC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCmluZGV4IGFkNjQ2YTA1MzI4MjcyNWJhMDkyYzU4MjMyMTZmN2YwNWQ5ZmM0NjEu
LmRhNjAyOGMwODY2NjM1NWUyNDIyMDZjMjYxODZiMjkzMDY4OTY1N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcApAQCAtMzksMTQgKzM5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENo
aWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCktPmNhbnZh
cygpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgp
LT5jYW52YXMoKSkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCmluZGV4IDcxZDk4YzkxYTU3ZDdiNjEzMzE3ZGE2YTdiNDgxMjU0NzA1MTQyMGMu
LjUyODY3ZDMwYTg2NzkwMTljYzE4YjM4YjQ4NTJkNmFiZTI2NThhZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU1LDIzICs1
NSwyOSBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiB0aGlzVgogICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CiB9CiAKLXZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmly
dHVhbChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJh
dG9yIGVuZCA9IHN0cnVjdHVyZXMoKS5lbmQoKTsKLSAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBpdCA9IHN0cnVjdHVyZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN0cnVjdHVy
ZXMoKS5lbmQoKTsKKyAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBpdCA9IHRo
aXNPYmplY3QtPnN0cnVjdHVyZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZpdC0+c2Vjb25kKTsKIAotICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6
Oml0ZXJhdG9yIGVuZDIgPSBjb25zdHJ1Y3RvcnMoKS5lbmQoKTsKLSAgICBmb3IgKEpTRE9NQ29u
c3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAh
PSBlbmQyOyArK2l0MikKKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0g
dGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTUNvbnN0cnVj
dG9yTWFwOjppdGVyYXRvciBpdDIgPSB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS5iZWdpbigp
OyBpdDIgIT0gZW5kMjsgKytpdDIpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdDItPnNlY29u
ZCk7CiAKLSAgICBpZiAobV9pbmplY3RlZFNjcmlwdCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jm1faW5qZWN0ZWRTY3JpcHQpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0
KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCk7
CiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3Vy
cmVudEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggOTAwMjgzMDgzNGUwZjMwYjFiZTBkNDJmODE2YjkyZTkzMTI1OTRjMC4uOTlh
NjMxZmM5MzY5OGE3OWIyY2I3MGMxNDRlYTJlMTdlZTZhMDljOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC02NCw3ICs2NCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdChKU09iamVj
dCopOwogICAgICAgICBKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQoKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RW
aXNpdG9yJik7CiAKICAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1f
d29ybGQuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCmluZGV4IGNiNDFkYmNlMWVjYzg4Y2ExNGVkYzViNTMzYTY4MDQyMjNk
NmM1ZDcuLmMwOWFkZjc4ZGE2YmU3ZDhiYTZiMzA0YWMwNmMxODk3NGNmNWI5NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc3
LDE1ICs3NywyMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3c6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGltcGwoKS0+dmlz
aXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBs
KCktPmZyYW1lKCkpCisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5l
cnModmlzaXRvcik7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPmltcGwoKS0+
ZnJhbWUoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZyYW1lKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAx
NTg4ZDRmZWQwMjFlZTZjYzY2ZmY1MzliOGYwMDQ2YTNlYmQ5NGE3Li5lMTA2Njg4Y2JkZGQwYTU0
ZmVjMTNiNjc2OTUxOTk5MjYxNGJjMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtODMsMTQgKzgzLDIwIEBAIHZvaWQgSlNET01X
aW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAv
LyBKU09iamVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6
dmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NV2lu
ZG93U2hlbGwqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fd2luZG93KQotICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmbV93aW5kb3cpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3Qt
Pm1fd2luZG93KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aW5kb3cp
OwogfQogCiBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggZmU4YTRm
ZGUwOTE2MjMxZmQzN2Q2M2ZjYTE0OGQzODdiY2RlMzg4NS4uZTlhYmMxNTgxMmNmNDY3YTBmMjgy
NmY2YTMwNThjOThlOTNmMDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaApAQCAtNzcsNyArNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpOwogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAg
ICAgdmlydHVhbCBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVk
aW9Ob2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlw
dEF1ZGlvTm9kZUN1c3RvbS5jcHAKaW5kZXggZWJjMjNiMzZjZDNlNDc1NDYzN2U0MjNlN2I2Y2U2
YTAyNDk3MTAzZi4uMDA0ZDhiZTlkYjUyOTdhMzhiY2EwZDYxMzgwZGNmMjRmMTU3ZjMyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2Rl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRB
dWRpb05vZGVDdXN0b20uY3BwCkBAIC0zNCwxMyArMzQsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNKYXZhU2NyaXB0QXVk
aW9Ob2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNKYXZhU2NyaXB0QXVkaW9Ob2RlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNKYXZhU2Ny
aXB0QXVkaW9Ob2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgc3Rh
dGljX2Nhc3Q8SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGltcGwoKSktPnZpc2l0SlNFdmVudExpc3Rl
bmVycyh2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05v
ZGUqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKaW5kZXggMzRmNTkzMTMzNWZk
N2E4YmU3MzMyYWY0YmM5NGNjNzY5YWQwMmNjZC4uZmExOWM5ZDIyYzBhNmVkOWJmZDdiM2Q2YzQ3
Y2QyNGFmMjY4MmMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTMyLDE4ICszMiwyNCBAQAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdm9pZCBKU01lc3NhZ2VD
aGFubmVsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorCit2b2lkIEpTTWVz
c2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNNZXNzYWdl
Q2hhbm5lbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAg
SlNNZXNzYWdlQ2hhbm5lbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTWVzc2FnZUNoYW5u
ZWwqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0g
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYg
KE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5wb3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9y
dCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+cG9ydDEoKSkKICAgICAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHBvcnQpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBs
LT5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1w
bC0+cG9ydDIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CmluZGV4IDhhZGY0YTdiYjM4ZWRhMGU0NmI0MDQ0NGY0YWQzOGZiNWNiZjFhMTIuLjllZWQ3Mzkw
MWNmN2E3OGJhMzdjMDY0YjIwMTAxNTAwNTNjM2FhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00MiwxOCArNDIsMjQg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpT
TWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpT
TWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNN
ZXNzYWdlUG9ydCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTWVzc2FnZVBvcnQqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwog
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gSWYgd2UgaGF2
ZSBhIGxvY2FsbHkgZW50YW5nbGVkIHBvcnQsIHdlIGNhbiBkaXJlY3RseSBtYXJrIGl0IGFzIHJl
YWNoYWJsZS4gUG9ydHMgdGhhdCBhcmUgcmVtb3RlbHkgZW50YW5nbGVkIGFyZSBtYXJrZWQgaW4t
dXNlIGJ5IG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dCgpLgotICAgIGlmIChNZXNzYWdlUG9y
dCogcG9ydCA9IG1faW1wbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAgICBpZiAoTWVzc2Fn
ZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkp
CiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIG1faW1wbC0+dmlz
aXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlz
aXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggNDdmNTZh
MjllZjQ0YWNjMDEwZjU3NDkyODcxYzZhMGNhZWQ3MDg4ZC4uYTEwZDUyYTE5YTdiMzhiMTM0MDY5
NGYyNDUzZmFlODQyZDg4NDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtMzUsNiArMzUsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIEpTTmFtZWROb2RlTWFw
Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCiBib29sIEpTTmFtZWROb2RlTWFwOjpjYW5H
ZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBsLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShp
ZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CkBAIC00NiwxOCArNTEsMTkgQEAgSlNW
YWx1ZSBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW4KICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9i
YWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3Ry
aW5nKHByb3BlcnR5TmFtZSkpKTsKIH0KIAotdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIEpTTmFtZWROb2RlTWFwKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIHRoZSB3
cmFwcGVyIGZvciBvdXIgdW5kZXJseWluZyBOYW1lZE5vZGVNYXAncyBlbGVtZW50CiAgICAgLy8g
YWxpdmUgYmVjYXVzZSBOYW1lZE5vZGVNYXAgYW5kIEF0dHIgcmVseSBvbiB0aGUgZWxlbWVudCBm
b3IgZGF0YSwgYW5kCiAgICAgLy8gZG9uJ3Qga25vdyBob3cgdG8ga2VlcCBpdCBhbGl2ZSBjb3Jy
ZWN0bHkuCiAgICAgLy8gRklYTUU6IEZpeCB0aGlzIGxpZmV0aW1lIGlzc3VlIGluIHRoZSBET00s
IGFuZCByZW1vdmUgdGhpcy4KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLT5lbGVtZW50
KCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZWxlbWVudCgp
OwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KGVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwCmluZGV4IDUxZTNiYjg2YWFlZTMyYjVmMjE2NTliZTEzN2M4MmE0NDMyZmRm
MTEuLjk3MTUyNjY1MGFjNGJiYjA0NTE0NTFmYjI2NGU0NDRmYjUxYzQ1MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtMTkyLDE0ICsxOTIsMjAg
QEAgU2NvcGVDaGFpbk5vZGUqIEpTTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0
ZSosIFNjb3BlQ2hhaW5Ob2RlKiBub2RlKQogICAgIHJldHVybiBub2RlOwogfQogCi12b2lkIEpT
Tm9kZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOb2RlOjp2
aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2RlKiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNOb2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKIAotICAgIE5vZGUqIG5vZGUgPSBtX2ltcGwuZ2V0KCk7CisgICAgTm9kZSogbm9kZSA9IHRo
aXNPYmplY3QtPm1faW1wbC5nZXQoKTsKICAgICBub2RlLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnMo
dmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAppbmRl
eCBjMTUxYzU0YzRhMDJhOTRmNWIyMmQ0M2FhNjZhMmU0MThmZTMyMTQxLi41NjA4MWVjMTM1Njk1
Y2IwYjA4MjFjMjZjY2Y1MmI3Y2E2NmNiOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKQEAgLTM2LDEzICszNiwxOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNOb2RlRmls
dGVyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU05vZGVGaWx0
ZXI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU05vZGVGaWx0ZXIq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU05vZGVGaWx0ZXIqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpKTsKKyAg
ICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpOwogfQog
CiBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKaW5kZXggMDJkMTA4ZDI0ZjVkZmFhZTA5M2ExZGVj
Y2E1YjI3NmM3MTM4OGIwYS4uNzA1NTk0NjJhNTc4ODVkOTY2YjA5NWNhNWYxMzU1ZWIwMDI4MDI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9y
Q3VzdG9tLmNwcApAQCAtMjksMTQgKzI5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9kZUl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNOb2RlSXRlcmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IG1faW1wbC0+Zmls
dGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IHRoaXNPYmplY3QtPm1faW1wbC0+
ZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5j
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0
YW5jZUN1c3RvbS5jcHAKaW5kZXggZGQyMGZiYTBiNzgzZDAxM2Y0MjRiNTc1MmU1Y2E3ZTg5MDEx
N2EzNC4uODdlNmJmNjM5ZDkwZTQzZDc0OTM0MjIzYWNiYThmMDIwN2ExOWRlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNl
Q3VzdG9tLmNwcApAQCAtMzUsMTMgKzM1LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDOjpKU0Nl
bGwqIGNlbGwsIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTVkdFbGVtZW50
SW5zdGFuY2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1NWR0VsZW1lbnRJbnN0YW5jZSo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBKU0M6Ok92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KHJvb3QoaW1wbCgpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSk7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCktPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCmlu
ZGV4IDNlMzc5NjkzN2NkZWE4ZmU1ZDRjNmFiMDdmMjRkZjJlYTllZWY0ZGMuLjlmMzlhMTRlNzVj
M2M1NGQ1MTBhMTMzYzdmNzBhYjI2OGE3NDAwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAgLTQzLDE0ICs0MywyMCBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNT
aGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpT
U2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZp
c2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTaGFyZWRXb3JrZXI6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1NoYXJlZFdvcmtlciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU2hhcmVkV29ya2VyKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChNZXNz
YWdlUG9ydCogcG9ydCA9IGltcGwoKS0+cG9ydCgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IHRoaXNPYmplY3QtPmltcGwoKS0+cG9ydCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QocG9ydCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3R5bGVTaGVldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRDdXN0b20uY3BwCmluZGV4IDIxZTAwYjE2OGMyMjU0MTE4MTE0ZDJhNDkxZTFlNGUy
MDUxMWM2ZTYuLjJkNzI2YWJiMTdmOGY0ZjM3NDgzYTVhNDAyM2FlM2EwYzY0ODBjY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApA
QCAtMzUsMTMgKzM1LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19p
bmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU3R5
bGVTaGVldDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTU3R5bGVTaGVldCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU3R5bGVT
aGVldCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNW
aXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsK
LSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0
eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVX
YWxrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2Vy
Q3VzdG9tLmNwcAppbmRleCBkZmYzNDY5Y2UyOTgwNzQ2YTUyMzFlNWQxMzYzOTc0NTBiZmMyNjVj
Li45NWVkYzA1YTVhODE2NjdjYzZhMWYwMmViOGEzNzlhNzEyZDExMDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI4LDE1
ICsyOCwyMSBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotdm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCisKK3ZvaWQgSlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5m
byk7CisgICAgSlNUcmVlV2Fsa2VyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUcmVlV2Fs
a2VyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlm
IChOb2RlRmlsdGVyKiBmaWx0ZXIgPSBtX2ltcGwtPmZpbHRlcigpKQorICAgIGlmIChOb2RlRmls
dGVyKiBmaWx0ZXIgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPmZpbHRlcigpKQogICAgICAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmlu
ZGV4IDU5YjYzOTIwMmVkZTI2MmFhNDEzZTg2ZmIwMDk5NDc0OTkyYzYxZmUuLjI0NTZiN2Q3MTdm
NmI4ZGQ4MTBjNzU1YWJmOGU5Y2NkODQ3YmZmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
QEAgLTE5MiwxMyArMTkyLDE5IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAgICAgcmV0dXJu
IGpzTnVsbCgpOwogfQogCi12b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRo
aXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChpbXBsKCkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHRoaXNPYmplY3QtPmltcGwoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4
ODdhM2JjMDQ1ZTliZDcxYjdkNGYyYjZmMTk5YzMxZDY3ZWQ3MDZiLi5mOTAwNDk2MGI0NWRmNGIx
YmY1YmZiMDI5NjM4ODNjNzFiM2I0MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTUzLDE5ICs1MywyNSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNXb3Jr
ZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1dv
cmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dvcmtlckNvbnRleHQ6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1dvcmtlckNvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckNvbnRleHQq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVj
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKFdv
cmtlckxvY2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS0+b3B0aW9uYWxMb2NhdGlvbigpKQorICAg
IGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSB0aGlzT2JqZWN0LT5pbXBsKCktPm9wdGlv
bmFsTG9jYXRpb24oKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGxvY2F0aW9uKTsK
LSAgICBpZiAoV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSBpbXBsKCktPm9wdGlvbmFsTmF2
aWdhdG9yKCkpCisgICAgaWYgKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gdGhpc09iamVj
dC0+aW1wbCgpLT5vcHRpb25hbE5hdmlnYXRvcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QobmF2aWdhdG9yKTsKIAotICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpOworICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpOwogfQogCiBib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMjU3NTc1NjY2NmRmZTYwZTdhM2QyNGRh
N2EwOTFlYTAzM2I5MWJkMi4uNjA5MTM4MzYxNjg1YTU5YjU1MTBhYTU1ZDE0MWEyYjI0OTUyYTli
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAKQEAgLTU0LDI4ICs1NCwzNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hNTEh0dHBSZXF1ZXN0KiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNYTUxIdHRwUmVxdWVzdCo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxv
YWQqIHVwbG9hZCA9IG1faW1wbC0+b3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJl
cXVlc3RVcGxvYWQqIHVwbG9hZCA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxVcGxvYWQo
KSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHVwbG9hZCk7CiAKLSAgICBpZiAoRG9j
dW1lbnQqIHJlc3BvbnNlRG9jdW1lbnQgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkK
KyAgICBpZiAoRG9jdW1lbnQqIHJlc3BvbnNlRG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwt
Pm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJl
c3BvbnNlRG9jdW1lbnQpOwogCi0gICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVm
ZmVyID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKKyAgICBpZiAoQXJy
YXlCdWZmZXIqIHJlc3BvbnNlQXJyYXlCdWZmZXIgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlv
bmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cmVzcG9uc2VBcnJheUJ1ZmZlcik7CiAKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCi0g
ICAgaWYgKEJsb2IqIHJlc3BvbnNlQmxvYiA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2Io
KSkKKyAgICBpZiAoQmxvYiogcmVzcG9uc2VCbG9iID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRp
b25hbFJlc3BvbnNlQmxvYigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocmVzcG9u
c2VCbG9iKTsKICNlbmRpZgogCi0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7CiB9CiAKIC8vIEN1c3RvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAKaW5kZXggMzU0ODlkYzQ3YThlMDE0
ZWYyNDI2MjM2NDFjYTFlYTdhYTQ3NDJmNC4uMDk5NDJmNWVlZDA0ZmQzYjFjZmZkMTM1ZDJiMTgy
NzlhMWE3MDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0
aFJlc3VsdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0
aFJlc3VsdEN1c3RvbS5jcHAKQEAgLTM3LDE0ICszNywyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0
b3IpOworfQorCit2b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hQYXRoUmVzdWx0KiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNYUGF0aFJlc3VsdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICBjb25zdCBYUGF0aDo6VmFsdWUmIHhwYXRoVmFsdWUgPSBp
bXBsKCktPnZhbHVlKCk7CisgICAgY29uc3QgWFBhdGg6OlZhbHVlJiB4cGF0aFZhbHVlID0gdGhp
c09iamVjdC0+aW1wbCgpLT52YWx1ZSgpOwogICAgIGlmICh4cGF0aFZhbHVlLmlzTm9kZVNldCgp
KSB7CiAgICAgICAgIGNvbnN0IFhQYXRoOjpOb2RlU2V0JiBub2Rlc1RvTWFyayA9IHhwYXRoVmFs
dWUudG9Ob2RlU2V0KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZXNUb01h
cmsuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMDk1MjhkNTZiYzU5OTU5NjdkYjFhNDc2MWQwNWI4
YWFiN2VmZmU5Yi4uNTIwM2ZkZjBjNDA3MTg4NmJlY2JkNDYxOGMxMWE2YmM4ZTlkM2Q4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTg3Nyw3ICs4NzcsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgdmlzaXQg
ZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuKSB7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90Vmlz
aXRvciYpO1xuXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpO1xuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7XG5cbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxh
Z3N7IkpTQzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiJ9ID0gMTsKICAgICB9CiAKQEAgLTIyMDAs
MjEgKzIyMDEsMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbiAmJiAhJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTWFya0Z1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9p
ZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOworCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQg
JHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRXZlbnRUYXJnZXQifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+aW1wbCgpLT52
aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgICAgICBm
b3JlYWNoIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZSA9ICRfOwogICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChtXyIgLiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKVxuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fIiAuICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+bV8iIC4gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIilcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
XyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRl
eCBmYzY4M2E1ZGY5NDU3ZjExMjZiMjk4N2Q5ZmQxNjA1ZjcwYTMxMWYzLi4xMTliNDllMDQwNjky
YTFkOGUzOTBjZGYxMGUzMDg2ZGNiN2E3YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTg3MCwxNiArMTg3
MCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAm
c19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpT
VGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2NhY2hlZEF0dHJp
YnV0ZTEpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZEF0dHJpYnV0ZTEpOwotICAg
IGlmIChtX2NhY2hlZEF0dHJpYnV0ZTIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hl
ZEF0dHJpYnV0ZTIpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmli
dXRlMSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmli
dXRlMSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMikKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMik7CiB9CiAKIC8v
IENvbnN0YW50IGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCA4ZDUzNDEyZTg2NzYzOTZjNGUxNjIxNTNlMTJj
N2QzYjhlNzRkZDFmLi5mMjlkYzhkNTkyMTM4ZjAzYTI4OWFkYTE2MWQ1YWU4OTA3N2YzZGRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRBdHRyaWJ1dGUxOwog
ICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRBdHRyaWJ1dGUyOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwog
CiAKICAgICAvLyBDdXN0b20gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9p
bnN0YW5jZS5jcHAKaW5kZXggNGJiZTY1ZTAxMTNkYmZjOTg0ZDdhNTQ2NDQ3ZGRlNjVjMDk5MjZh
YS4uMjdiZjFjMTVlOTU0OGUxMzM1NzY4MjE3Y2ZiNjU4YzQyNzYwNWExYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCkBAIC02MiwxMCArNjIsMTYgQEAgcHVibGlj
OgogICAgIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAg
ICAgICAgUnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgUXRJ
bnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBRdFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICAgICAgUnVudGltZU9i
amVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgUXRJbnN0
YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4odGhpc09iamVjdC0+Z2V0
SW50ZXJuYWxJbnN0YW5jZSgpKTsKICAgICAgICAgaWYgKGluc3RhbmNlKQogICAgICAgICAgICAg
aW5zdGFuY2UtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA3M2RkMmJmNTYyZWVmMTJmMjIxYzY2MzI2MDg5
Nzk4MzM2ODI4YmYwLi45NWVhOGQ5MzQ3ZjUyNDYyNWRmNGU2OTI1NWYzZjk0ZDVmNGQ1OTIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xNDM5LDEwICsxNDM5
LDE2IEBAIHZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVuCiAgICAgZC0+bV9hbGxvd1ByaXZhdGUgPSBh
bGxvd1ByaXZhdGU7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgUXRSdW50aW1lTWV0
aG9kOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhv
ZCk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBRdFJ1bnRp
bWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PFF0UnVudGltZU1ldGFNZXRob2QqPihjZWxsKTsKKyAgICBRdFJ1bnRpbWVNZXRob2Q6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgUXRSdW50aW1lTWV0YU1ldGhv
ZERhdGEqIGQgPSB0aGlzT2JqZWN0LT5kX2Z1bmMoKTsKICAgICBpZiAoZC0+bV9jb25uZWN0KQog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+bV9jb25uZWN0KTsKICAgICBpZiAoZC0+bV9kaXNj
b25uZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggOTA2ZDEwOGUx
ZTc2OWIyNTc2YWJlM2RkMTA2ZDc0MzViOGJmMjg3MC4uZGUyMTNjMjA5ODEyMzFkYWFmZjZmNmNi
ZWY3MWM5MzVkNWE3YjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBA
IC0xNjgsNyArMTY4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9y
Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGRfZnVuYygpIGNv
bnN0IHtyZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSo+KGRf
cHRyKTt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGZmN2I2ZDdm
YjU0NTNmYzc1M2E2MTJjMjE0YzBjZjI5OGJiNzNmNmYuLjhhYzBlZjcwY2FlYWMyYzIwYThhZTFk
N2UwODdiNjJkMjVlYjgwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
CkBAIC0xNDQsNyArMTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7
IH0KICNlbmRpZgotICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJr
aW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJikgaW4K
KyAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpT
V29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKSBpbgogICAg
ICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgogICAgICAgICBXb3JrZXJOYXZpZ2F0
b3IqIG9wdGlvbmFsTmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7
IH0KICAgICAgICAgV29ya2VyTG9jYXRpb24qIG9wdGlvbmFsTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2xvY2F0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCAwNzZh
ZGM2NGYzMWMwN2NhNDY4M2RjNzk3Yzg2MzVhMTNmMmNjMDYxLi5iNzBmNjc1MzBmYTFlYTgzMjVi
NmUxOTU0ZWZkYjhkYTU3NTgwYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTU2LDcg
KzU2LDcgQEAgX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERv
Y3VtZW50RTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01H
bG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVw
cmVzZW50YXRpb25FUE5TXzdFbGVtZW50RWo7CiBfWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUU7Ci1fWk43V2ViQ29yZTZKU05vZGUxM3Zp
c2l0Q2hpbGRyZW5FUk4zSlNDMTFTbG90VmlzaXRvckU7CitfWk43V2ViQ29yZTZKU05vZGUyMHZp
c2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFCiBfWk43V2ViQ29yZTZKU05v
ZGUzcHV0RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNWYWx1ZUVS
TlMxXzE1UHV0UHJvcGVydHlTbG90RTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwogX1pO
N1dlYkNvcmU2dG9Ob2RlRU4zSlNDN0pTVmFsdWVFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108335</attachid>
            <date>2011-09-22 08:19:32 -0700</date>
            <delta_ts>2011-09-22 08:51:55 -0700</delta_ts>
            <desc>Fix GTK for real</desc>
            <filename>bug-68404-20110922081938.patch</filename>
            <type>text/plain</type>
            <size>115762</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3MTgKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzNjhiZjQ5ZTkwNjY3YzQ1OTA2MWEzMjE3NmJhYmYyZjNkM2U1NDQyLi4wZDJj
N2E1YjcxNDUzNmRmMzRjMmNiMGY3ODJkNDA0OWVjNTY5ZjQ1IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjIgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3RhdGljIHZl
cnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0IHRoZSBi
b2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAgIHRocm91
Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3RhdGljIG1l
dGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0dWFsIG1l
dGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAKKyAgICAg
ICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIgb3duIGN1
c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVkIHRvIGNv
bnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUgCisgICAg
ICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4gb3VyIGN1
c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBzdG9yZSBz
b21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQgCisgICAg
ICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0luZm8uCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA5LTIx
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIENy
YXNoIGluIFJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzIHdoZW4gR3JhcGhpY3NDb250ZXh0J3Mg
cGFpbnRpbmcgaXMgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZkODEwNTk2
My4uMWRlZmI0ZTVlNTZlMWY1Y2Q1NTM4OTdmYTRiYjU4NTUzNTllNTA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5NiwxMyArMTk2LDE5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
Q29uc3RydWN0RGF0YSYpOwogICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoKHN0YXRp
Y19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c19pbmZv
KTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAgICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlzT2JqZWN0KSksICZKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQYXJlbnQ6OnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgICAgIFBhcmVudDo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5QYXJlbnQ6OnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAg
IFBhcmVudDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdGhp
c09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAg
ICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggM2UzYzFiM2M3OGFkNGU0YTdmNjY1N2M0M2ZkZDljNWJlMjViODQwMi4uODJmYzQzZDU0
ZGJkODA3OGM0ZTEyMzdkNGUwNTg2YmU2ZGNmYjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6
dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0
dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwg
aW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUg
CisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBh
biBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1
YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3Jl
ZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2Rz
IHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUg
ZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNl
IG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZv
cm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRv
IHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZvLgorCisgICAgICAgICogQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkdldHRl
clNldHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FjdGl2
YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuVmly
dHVhbCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3Bl
T2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2Nv
cGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29w
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAg
IChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OlJlZ0V4cE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTY29wZUNo
YWluTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWlu
Tm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6dmlz
aXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorCiAyMDExLTA5
LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgMzItYml0IGNh
bGwgY29kZSBjbG9iYmVycyB0aGUgZnVuY3Rpb24gY2VsbCB0YWcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDUyOGE1MTQ4Y2Y1NzRlNGJlZGFiZWM1YzIzZTM4
NjI1ZjE3MjA5M2IuLjg0ZTllODgzYzMyOWMzYmFlNjc2NjgwNmM5MzI5MjdhNDlkM2QyOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTYzLDEwICsxNjMs
MTEgQEAgX19aTjNKU0MxM1N0YXRlbWVudE5vZGU2c2V0TG9jRWlpCiBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxMGdsb2JhbEV4ZWNFdgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVH
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEVqCiBf
X1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEz
dmlzaXRDaGlsZHJlbkVSTlNfMTFTbG90VmlzaXRvckUKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDE2YWRkU3RhdGljR2xvYmFsc0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJ
bmZvRWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFagogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjB2aXNp
dENoaWxkcmVuVmlydHVhbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9i
amVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1
UHV0UHJvcGVydHlTbG90RSAgCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0aW5pdEVQTlNfOEpT
T2JqZWN0RQpAQCAtMTgwLDcgKzE4MSw2IEBAIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlk
VGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2
CiBfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0
dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3RhdGVFCi1fX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0
MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVP
d25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVF
RVB2Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyOGZpbmFsaXpl
RU5TXzZIYW5kbGVJTlNfN1Vua25vd25FRUVQdgogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lckQy
RXYKQEAgLTI3NSwxMSArMjc1LDExIEBAIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185RXhlY1N0YXRl
RQogX19aTjNKU0M2UmVnRXhwNW1hdGNoRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5n
RWlQTjNXVEY2VmVjdG9ySWlMbTMyRUVFCiBfX1pOM0pTQzZSZWdFeHA2Y3JlYXRlRVJOU18xMkpT
R2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NFCiBfX1pOM0pTQzZSZWdF
eHBEMUV2Ci1fX1pOM0pTQzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9y
RQogX19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRQog
X19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQzdKU0FycmF5MTVzZXRTdWJjbGFzc0RhdGFFUHYKIF9fWk4zSlND
N0pTQXJyYXkxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVy
dHlTbG90RQorX19aTjNKU0M3SlNBcnJheTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk5TXzExU2xv
dFZpc2l0b3JFCiBfX1pOM0pTQzdKU0FycmF5NnNfaW5mb0UKIF9fWk4zSlNDN0pTQXJyYXk5c2V0
TGVuZ3RoRWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1
Y3R1cmVFCkBAIC0zMDgsNyArMzA4LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxMmRlZmluZUdldHRl
ckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfagogX19aTjNKU0M4SlNPYmpl
Y3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfagog
X19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cEdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBTZXR0ZXJFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVSTlNf
MTFTbG90VmlzaXRvckUKK19fWk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlND
ZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5
RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3QxNGRl
bGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk4zSlNDOEpTT2JqZWN0MTV1bndyYXBw
ZWRPYmplY3RFdgpAQCAtMzI0LDYgKzMyNCw3IEBAIF9fWk4zSlNDOEpTT2JqZWN0MTdwdXRXaXRo
QXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFsdWVFagogX19aTjNKU0M4SlNPYmpl
Y3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90
RQogX19aTjNKU0M4SlNPYmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNTdGF0ZUVS
ZFJOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBO
U185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2Rl
RQorX19aTjNKU0M4SlNPYmplY3QyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOU18xMVNsb3RWaXNp
dG9yRQogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pT
QzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5T
XzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5rbm93bkVFRQogX19aTjNKU0M4SlNPYmplY3QyM2Fs
bG9jYXRlUHJvcGVydHlTdG9yYWdlRVJOU18xMkpTR2xvYmFsRGF0YUVtbQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBhMGQ1NDY4
MDY4OGE5YTRlODQwNGY5ZDY1ZDZmNmJjMzdlMDk2NjVkLi4xMGViNGU2ZjhlNzI0YWJmYzljODBl
ZGM1NTkzODY4N2M5MTNiMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMzc4LDExICszNzgsMTIgQEAgRVhQT1JUUwogICAg
ID91bndyYXBwZWRPYmplY3RASlNPYmplY3RASlNDQEBVQUVQQVYxMkBYWgogICAgID91dGY4QFVT
dHJpbmdASlNDQEBRQkU/QVZDU3RyaW5nQFdURkBAX05AWgogICAgID92YWxpZGF0ZVZhbHVlQE1h
cmtTdGFja0BKU0NAQEtBWFZKU1ZhbHVlQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBKU0dsb2Jh
bE9iamVjdEBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5A
SlNPYmplY3RASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgotICAgID92aXNpdENoaWxkcmVu
QEpTV3JhcHBlck9iamVjdEBKU0NAQEVBRVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0
Q2hpbGRyZW5AU2NvcGVDaGFpbk5vZGVASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgogICAg
ID92dGFibGVBbmNob3JASW50ZXJuYWxGdW5jdGlvbkBKU0NAQEVBRVhYWgorICAgID92aXNpdENo
aWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JA
MkBAWgorICAgID92aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFW
U2xvdFZpc2l0b3JAMkBAWgorICAgID92aXNpdENoaWxkcmVuVmlydHVhbEBKU0dsb2JhbE9iamVj
dEBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5WaXJ0dWFs
QEpTT2JqZWN0QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJl
blZpcnR1YWxAU2NvcGVDaGFpbk5vZGVASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgogICAg
ID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCiAgICAgP3dhaXRG
b3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICA/d3JpdGFibGVAUHJvcGVy
dHlEZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCBhZjZhNTZmOWJlMmE2MDQ3
ODJjODUwYzMxZWY1OWQyZjQwY2RmNTBjLi5lZjk3YjBmYzU5YjQ0NWZlODM0OGQzZGY0OTAyZTBk
ZGUyYmQ0YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmNwcApAQCAtNDMsMTUgKzQzLDIxIEBAIHZvaWQgRGVidWdnZXJB
Y3RpdmF0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBhY3RpCiAgICAgbV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdGF0aWNf
Y2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKSk7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3Rp
dmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWJ1Z2dl
ckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxEZWJ1Z2dlckFj
dGl2YXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICBpZiAobV9hY3RpdmF0aW9uKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9h
Y3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uKQorICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uKTsKIH0KIAogVVN0cmluZyBE
ZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggY2NkYmRlOGY2
Y2I0MGFiNzE5ZDU0ODZhMGE0ODU0ZTcwOGZhOWY3Mi4uYjBjMjBjMmNjOTM5ZmQ5YmMxNzRkODUy
N2Y4MGQ3ODBmYWEyNjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IGZkNjY4YmQ5
ZWRiNjk4MTFjYmEzOTdlYTc4ZGNiNzEyOTVkYzUyOWQuLmMzOWM1N2ZjNGRkZDMwMjYzYzcwNzE1
NDBlNTA4ZGNhYTEwZDhmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwpCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwog
ICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5
cGUpIHsKLSAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAg
ICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwpCiAjZWxzZQogICAgICAgICBBU1NFUlQoIW1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKICAgICAgICAgbV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICBjZWxsLT52aXNpdENoaWxkcmVuKCp0aGlz
KTsKKyAgICAgICAgY2VsbC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogICAgICAgICBB
U1NFUlQobV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCkBAIC04MCw3
ICs4MCw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCkKICAgICAgICAgYXNBcnJheShjZWxsKS0+dmlzaXRDaGlsZHJlbkRpcmVjdCgqdGhpcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2VsbC0+dmlzaXRDaGlsZHJlbigqdGhpcyk7
CisgICAgY2VsbC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogfQogCiB2b2lkIFNsb3RW
aXNpdG9yOjpkcmFpbigpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJh
aW4oKQogI2lmIEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCiAgICAgICAgICAgICAgICAg
bV92aXNpdGVkVHlwZUNvdW50cy5jb3VudChjZWxsKTsKICNlbmRpZgotICAgICAgICAgICAgICAg
IGNlbGwtPkpTQ2VsbDo6dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgICAgICAgICAgICAgSlND
ZWxsOjp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoY3Vy
cmVudC5tX3ZhbHVlcyA9PSBlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggZWM2Y2M4ZjFjNzIwN2RhODNh
ZjE1MTQyNmI5ZjU4MWIxOTg0NmM0OS4uYmVmMzBkOGJiMzE4ZTJlYmU2ZmQ0YzM0YzQ2ODlkZjU5
MTYzMmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CkBAIC00MywyNSArNDMsMzEgQEAgQXJndW1lbnRzOjp+QXJndW1lbnRzKCkKICAgICAgICAgZGVs
ZXRlIFtdIGQtPmV4dHJhQXJndW1lbnRzOwogfQogCi12b2lkIEFyZ3VtZW50czo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8QXJndW1lbnRzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogCi0gICAgaWYgKGQtPnJlZ2lzdGVyQXJyYXkpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKGQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQtPm51bVBhcmFtZXRlcnMpOworICAg
IGlmICh0aGlzT2JqZWN0LT5kLT5yZWdpc3RlckFycmF5KQorICAgICAgICB2aXNpdG9yLmFwcGVu
ZFZhbHVlcyh0aGlzT2JqZWN0LT5kLT5yZWdpc3RlckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5k
LT5udW1QYXJhbWV0ZXJzKTsKIAotICAgIGlmIChkLT5leHRyYUFyZ3VtZW50cykgewotICAgICAg
ICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50cyA9IGQtPm51bUFyZ3VtZW50cyAtIGQtPm51bVBh
cmFtZXRlcnM7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGQtPmV4dHJhQXJndW1lbnRz
LCBudW1FeHRyYUFyZ3VtZW50cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPmV4dHJhQXJndW1l
bnRzKSB7CisgICAgICAgIHVuc2lnbmVkIG51bUV4dHJhQXJndW1lbnRzID0gdGhpc09iamVjdC0+
ZC0+bnVtQXJndW1lbnRzIC0gdGhpc09iamVjdC0+ZC0+bnVtUGFyYW1ldGVyczsKKyAgICAgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4
dHJhQXJndW1lbnRzKTsKICAgICB9CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmZC0+Y2FsbGVlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+Y2FsbGVlKTsKIAotICAgIGlmIChk
LT5hY3RpdmF0aW9uKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+YWN0aXZhdGlvbik7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPmQtPmFjdGl2YXRpb24pCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5kLT5hY3RpdmF0aW9uKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OmNvcHlU
b1JlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1h
eFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDU2
MTEzZGZhNjFkMDkyMjVkMWNiYzE5YzM5Y2YzMmExNDMyM2I2NzIuLjVlMjMwNzQ2ZGMzY2NlMTNi
MzBmNTE2YWQ1MjI2NzliNWFmOTk5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCkBAIC05MCw3ICs5MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCBmaWxsQXJnTGlz
dChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDBjNTkzMTk3NjVhMWVjZDE1Njc0
ZmRlZjA2YjcxZTRkZGQ2YTVmMWUuLmMyMmEwMDUyYmYzZDc3NzNjZjQxMTY1YTA3NjdlOTBhY2M1
NGQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CkBAIC0zNjYsMTQgKzM2NiwyMCBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxs
cygpCiAjZW5kaWYKIH0KIAotdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFByb2dyYW1FeGVjdXRhYmxlKiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgU2NyaXB0RXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9wcm9ncmFtQ29kZUJsb2Nr
KQotICAgICAgICBtX3Byb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwor
ICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvZ3JhbUNvZGVCbG9j
aykKKyAgICAgICAgdGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKIH0KIAogdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAzYmJmMDBhYTMx
NjA2ZWU4Y2NhZmVlNGI2NDNlYzFhOWZmNWJkYmRlLi5hMDBjOWUzODBkZTNlMzU1MzFmY2EwZGNm
OWUyM2IyMDMzMmU1MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCkBAIC0zNjQsNyArMzY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxF
eGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sKTsKIAogICAgICAg
ICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwg
SklUQ29kZTo6SklUVHlwZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKIAogICAgICAgICBP
d25QdHI8RXZhbENvZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwpAQCAtNDI3LDcgKzQyOCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBj
b25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVJbnRlcm5hbChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5cGUpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2b2lk
IHVubGlua0NhbGxzKCk7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJv
Z3JhbUNvZGVCbG9jazsKQEAgLTU4MCw3ICs1ODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1i
b2xUYWJsZTsgfQogCiAgICAgICAgIHZvaWQgZGlzY2FyZENvZGUoKTsKLSAgICAgICAgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIq
LCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA5
OTAyYjc2OGYyNjg2NjliODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li45MTc5NTM0ODBlNTA0NzQ3
YWI0ZDA2NWM5NjQ1YzdmZmU4MDljYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTMwLDE2ICszMCwyMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIEdldHRlclNldHRlcjo6c19pbmZvID0geyAiR2V0dGVyU2V0
dGVyIiwgMCwgMCwgMCB9OwogCi12b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgR2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuVmlydHVh
bChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKLQotICAgIGlmIChtX2dldHRlcikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZ2V0dGVy
KTsKLSAgICBpZiAobV9zZXR0ZXIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3NldHRlcik7
CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBHZXR0ZXJTZXR0
ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBHZXR0ZXJTZXR0ZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxHZXR0ZXJTZXR0ZXIq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2dldHRlcikKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2V0dGVyKTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9zZXR0ZXIpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NldHRl
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAxOWNkYmRkYjAxMmFhMjQ5NWE2NDJkYjBmMDI0OGU3
MjZiYjUxOGZmLi5hMzEyZjczMGRkMzVmYzBiZWVjMzhkMzcwNzEyNWMzMDMyMWFhYzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtNTMsNyAr
NTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZXR0ZXJTZXR0ZXI7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBt
X2dldHRlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRo
aXMsIGdldHRlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uY3BwCmluZGV4IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVkNTQ5NzFjOGZiZDg4NWUu
LmE2MWQzNzFmY2U3NTFiYzMxMWVkZDUyN2E4OTdlMmZhMzFkN2JjOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNjMsMjIgKzYzLDI4
IEBAIEpTQWN0aXZhdGlvbjo6fkpTQWN0aXZhdGlvbigpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVk
U3ltYm9sVGFibGUqPihtX3N5bWJvbFRhYmxlKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBKU0FjdGl2
YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQWN0aXZh
dGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxk
cmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQWN0aXZhdGlv
biogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAgICAvLyBObyBuZWVkIHRvIG1hcmsgb3Vy
IHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZpbGUuCi0gICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5ID0gbV9yZWdpc3RlckFycmF5LmdldCgp
OworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IHRoaXNPYmplY3Qt
Pm1fcmVnaXN0ZXJBcnJheS5nZXQoKTsKICAgICBpZiAoIXJlZ2lzdGVyQXJyYXkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIG1fbnVt
UGFyYW1ldGVyc01pbnVzVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJB
cnJheSwgdGhpc09iamVjdC0+bV9udW1QYXJhbWV0ZXJzTWludXNUaGlzKTsKIAogICAgIC8vIFNr
aXAgdGhlIGNhbGwgZnJhbWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0aGUgcGFyYW1ldGVycyBhbmQg
dmFycy4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgbV9udW1QYXJh
bWV0ZXJzTWludXNUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBtX251
bUNhcHR1cmVkVmFycyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSAr
IHRoaXNPYmplY3QtPm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZSwgdGhpc09iamVjdC0+bV9udW1DYXB0dXJlZFZhcnMpOwogfQogCiBp
bmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAppbmRleCBkODYzNTkzYjMyYjE4MDRiNjE2ZTdiYTVi
YzhiZjFjYzVhNmE1ZjlhLi45OTEwOTc2ZDM0Zjk4ZGJkY2FkZjk4NDJlYzE4MDI3NTM1ZWZiYzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApAQCAt
NTUsNyArNTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIH5KU0FjdGl2
YXRpb24oKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1
aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCmluZGV4IDRiMGNhYTIyMTY4MmY2YzY4YTYwNWU4YWY5ZTU0MDY2NThjMDMy
Y2EuLmM4MzY2MTVhMTBiZGM3ZGM4N2ViYmZmYjI3ZTM3YmE3OGY5ZjQ4OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC04NzEsMTIgKzg3MSwxOCBAQCB2
b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBjb3VudCkKICAg
ICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQor
Cit2b2lkIEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBcnJh
eSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICB2aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIHRoaXNPYmplY3QtPnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CiB9CiAKIHN0YXRp
YyBpbnQgY29tcGFyZU51bWJlcnNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBi
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDU2NjIyMjVlNTdj
ZDE5NzUzY2QyOTQ2ZTFiNjJmNTcyNmMwNmRiNDcuLmU4ZmU3ODk1MDI4ZGY5MzcyOWEzMDM0NmYw
MGRjY2Y1ZmY1OTllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
QEAgLTE3Miw3ICsxNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29s
IGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
ID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNmRmNWI5ODc5MmZiNTE1OWUyZThiYmRh
NWFkMzBlYzE4ZTI5Mzc3Yy4uOWVlNTIyZjBjZThlMmI2NWFmYzJlNTI5ZmZhOTBjZTVhNDVjZWFm
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTg0LDcgKzg0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVj
U3RhdGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRp
b25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAgICAgIGNvbnN0
IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CkBAIC0xNzYsOSArMTc3LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCi0g
ICAgaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQorICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUp
OworICAgICAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworICAgIH0KKworICAgIGlu
bGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgSlNDZWxsKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oY2VsbCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3N0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IDQwMjZjOTk2NzlmYjE1NWQ5OWMzZDMzZDAyNWFlYzVmMTVjNmIz
NmQuLjVjZGNlNjJjMzU0YjE2ZDYyY2U0Y2RhYzIzYjJmNzYzMGZjYTcwMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMzEsMTYgKzEzMSwy
MiBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5hbWUoZXhlYyk7CiB9CiAKLXZvaWQgSlNGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNGdW5jdGlvbjo6
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRo
aXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9zY29wZUNoYWluKTsKLSAg
ICBpZiAobV9leGVjdXRhYmxlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9leGVjdXRhYmxl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZUNoYWluKTsKKyAgICBp
ZiAodGhpc09iamVjdC0+bV9leGVjdXRhYmxlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9leGVjdXRhYmxlKTsKIH0KIAogQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2Fs
bERhdGEoQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCmluZGV4IDY3YTBhYzkzMDM3YTY5MmZhNjY0Mjc2ZGI5OGJmYTIyZTk3Nzll
YjkuLjk4MDZkZjI2NzkzYTQzMGUxNmRjNmM2MDI2NGFjZGMwMjI4NzVhMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE1NCw3ICsxNTQsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50
c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAg
IHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggYTdmNThlNGI3ZDVkNWNjZTgyMjNiZDE5N2EwMmNlZWFhM2Y4N2Jj
MC4uYjJmNmU3MGJjMzgyMmQyYmM1Y2RlMGNhYjViOTc4OTE4YmRlMWUxNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA2LDY1
ICszMDYsNzEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgb2xkTGFzdEluUHJv
dG90eXBlQ2hhaW4tPnNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmplY3RQcm90b3R5cGUpOwog
fQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQordm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19p
bmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7IAorICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7Ci0gICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKLQotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZ2xvYmFsU2NvcGVDaGFpbik7Ci0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9tZXRob2RDYWxsRHVtbXkpOwotCi0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmbV9lcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
Jm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZt
X2V2YWxGdW5jdGlvbik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsRnVuY3Rp
b24pOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXBwbHlGdW5jdGlvbik7Ci0KLSAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX29iamVjdFByb3RvdHlwZSk7Ci0gICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmbV9mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9hcnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9ib29sZWFuUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3N0
cmluZ1Byb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1iZXJQcm90
b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0ZVByb3RvdHlwZSk7Ci0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBQcm90b3R5cGUpOwotCi0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJm1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fZGF0ZVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX2Vycm9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Z1
bmN0aW9uU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX25hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbnVtYmVyT2Jq
ZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBT
dHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2ludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmUpOwotCi0gICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgeworICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2dsb2JhbFNj
b3BlQ2hhaW4pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbWV0
aG9kQ2FsbER1bW15KTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNP
YmplY3QtPm1fZXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yYW5nZUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rv
cik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zeW50YXhFcnJv
ckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlz
T2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0b3IpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKKyAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworCisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOworICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYm9vbGVhblByb3RvdHlwZSk7
CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdQcm90b3R5
cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVtYmVyUHJv
dG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2RhdGVQ
cm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVn
RXhwUHJvdG90eXBlKTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fYXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlz
T2JqZWN0LT5tX2FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0
aGlzT2JqZWN0LT5tX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9jYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Nh
bGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlz
T2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRo
aXNPYmplY3QtPm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJnRoaXNPYmplY3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7CisgICAg
dmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVy
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0
aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X251bWJlck9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhp
c09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9u
U3RydWN0dXJlKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkpIHsKICAg
ICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2
YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLAogICAgICAgICAvLyB3ZSBjYW4gbWFyayB0aGUgdG9ybi1v
ZmYgYXJyYXkuCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJBcnJheS5n
ZXQoKSwgbV9yZWdpc3RlckFycmF5U2l6ZSk7Ci0gICAgfSBlbHNlIGlmIChtX3JlZ2lzdGVycykg
eworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJy
YXkuZ2V0KCksIHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheVNpemUpOworICAgIH0gZWxzZSBp
ZiAodGhpc09iamVjdC0+bV9yZWdpc3RlcnMpIHsKICAgICAgICAgLy8gRHVyaW5nIGV4ZWN1dGlv
biBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSBpbiB0aGUgcmVnaXN0ZXIg
ZmlsZSwKICAgICAgICAgLy8gdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyBob3cgbWFueSB2YXJp
YWJsZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0byB3aGVy
ZSB0aGV5IGVuZCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJlZ2luLgot
ICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVycyAtIHN5bWJvbFRhYmxlKCku
c2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJzIC0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5z
aXplKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGU4
YTA3ZTcyZTJjNjYyZGU1Nzg3ZTRjNzY0NDI3YWViNDA1YzhlNzkuLmI5YTY2ZGEzODg1OWEyOWM0
NWEzMGRjMzA1YzIwNWQ1NmM0YTdmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTc0LDcgKzE3NCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApp
bmRleCA1MjM3MjFjZGJhMDZiNWUzZjQwZGQzNDNlNmM3MWU5Y2QzN2Q0OTY2Li45YzgwMWI2YTRh
MzYzNGQ0NzIxMzA4OTgyODU3OTdlZjI2ZDYyZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02OCwxNSArNjgsMjEgQEAgc3RhdGljIGlubGluZSB2
b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5m
byogY2xhc3MKICAgICB9CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlv
bGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAg
ICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAj
ZW5kaWYKIAotICAgIHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2
aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCmluZGV4IDA1MmIxOWUwMWQ1ZDE3Y2IwYjk5M2M0OTgyNGI0NjAxODkzNWMyMjcuLmVj
YmRjNjg0MjJkOWIyMDE4MTM4MDgyY2FkOGZiMzYzY2E0MTQ3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzksOCArNzksOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7CisgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
ICAgICAvLyBUaGUgaW5saW5lIHZpcnR1YWwgZGVzdHJ1Y3RvciBjYW5ub3QgYmUgdGhlIGZpcnN0
IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQKICAgICAgICAgLy8gaW4gdGhlIGNsYXNzIGFzIGl0
IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJvbApA
QCAtODE2LDcgKzgxNyw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIAogQUxXQVlTX0lOTElO
RSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBKU0NlbGw6OnZp
c2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFn
ZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0cnVjdHVy
ZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDRjN2E2ZWU5
Njc0NThlOTE0YTQ3MzBmZGU2NGEzYWE1ZTQ1MTA5NTcuLmVhNDJkNzhmMGFkMjNjOTViODEzNjZl
ODI5MGY1YTMwYzViMzA5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC05MiwxMyArOTIsMTkgQEAg
SlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZSwgc2l6ZV90IGkpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLXZvaWQg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5n
ZXQoKSwgbV9qc1N0cmluZ3NTaXplKTsKLSAgICBpZiAobV9jYWNoZWRQcm90b3R5cGVDaGFpbikK
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIHZp
c2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICB2aXNpdG9y
LmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2pzU3RyaW5ncy5nZXQoKSwgdGhpc09iamVjdC0+
bV9qc1N0cmluZ3NTaXplKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVD
aGFpbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBhNzE5
ZGUxY2I4ZjI3MTZhNzZhMjVlNWNhMGMyNDdlNzdhNzZhYmExLi5jNmY2OTc5NzJjYTc1NDZiNTJh
NjQ2YjM3MGM5ZDBmZjU3MWM4NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC01OCw3ICs1OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9v
bCBnZXRPZmZzZXQoc2l6ZV90IGksIGludCYgb2Zmc2V0KQogICAgICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCmlu
ZGV4IDUyMDY1MTBkNmNkMmE3NzI0YTczYjViZWQxMmExZjJkNmQ4Y2M3MTYuLjMxZGE4MGE3OWVj
ZDYwN2VlMTk5MjI3YjAyYWU3ZWQ0ZmQzZWIxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCkBAIC0zMiwxMyArMzIs
MTkgQEAKIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRp
Y1Njb3BlT2JqZWN0KTsKIAotdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU3RhdGljU2NvcGVPYmpl
Y3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAg
ICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpT
VmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJpYWJsZU9i
amVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9yZWdpc3RlclN0b3JlKTsKIH0KIAogSlNPYmplY3QqIEpTU3Rh
dGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgK
aW5kZXggMWY4ZDhiOGZlZjNkOGJjM2MxZTJiNWIyMDAxNmIyYTU5ZjVjNTI2ZS4uODIxMTc4YTlh
ZmI4NjNjMjZlN2ZmY2VhNmEyYTRlMDhjYjhlZWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtNDEsNyArNDEsOCBA
QCBuYW1lc3BhY2UgSlNDewogICAgICAgICAgICAgcmV0dXJuIHNjb3BlT2JqZWN0OwogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7
CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVj
a3MpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3Qo
RXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCA4ZDYzODdlYzBhYjIwYWRmN2FmYTUzZTFmMTBmZGFk
MDQzMGYwMWUyLi42OTE5MmZlM2NkNzgzZGYxNGUwNDQ1NDk5OTJkZDk1ZGJmOWUwOTJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAK
QEAgLTI2LDE0ICsyNiwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU1dyYXBwZXJPYmplY3QpOwogCi12b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikgCit2b2lkIEpTV3JhcHBlck9iamVjdDo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dyYXBwZXJPYmplY3Qq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dyYXBwZXJPYmplY3QqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1faW50ZXJuYWxWYWx1ZSkKLSAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJuYWxWYWx1ZSk7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYg
KHRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCBj
ZjQ0ZTA0ZTc4NWQyNGU0OWEwYjljNTU3MmQ1ZTE1YzJhN2I0OTM0Li45NTk2YWE0ZTMyMGY5MjZl
Y2U3ZjFmYWI2ODQzZWQ0ZjlhMTFkMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtNDUsNyArNDUsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNp
dG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKICAgICAgICAgCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVy
bmFsVmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTEwM2MzNzYxMzYyYzI1M2I2
Y2UyOGRhMWYyYzAyYTYxYWY2Y2RmNy4uZTU4MWRhOWY0NDljZjM5MjQzOTg1MWE4MDZiZTE5OWM1
NTU5NDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDE0ICszNywyMCBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cgogewogfQogCi12b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKLSAgICBpZiAobV9lcnJvclN0cnVjdHVyZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
ZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEludGVybmFsRnVuY3Rpb246
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3Qt
Pm1fZXJyb3JTdHJ1Y3R1cmUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2Vycm9yU3RydWN0dXJlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCmluZGV4IGNjNDYzNWI1MGUwODU2OWVlMGQ5NWNmMWE4MDA1MmRmOTcwYWM1MDEu
LjhjMjcyZWFhMmE4NjRjMDgwYTFkMjE0ZGNmM2ViNzZmOGJlMGEzYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgK
QEAgLTcwLDcgKzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5h
bEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxU
eXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9lcnJvclN0cnVjdHVyZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggYmFlOTA4NjFlYTUzNTkwNmI5ZWE1NjVhYzdh
ZDJjMzQ0YzFlNmM1Zi4uMTIzZGQ2ZTlhMTZmZjY5MmY2YjI3NDdiZDIwZmRiMmY3MjBkNDEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBA
IC03OCwxNiArNzgsMjIgQEAgUmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2JqZWN0KCkKIHsKIH0KIAot
dm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFJlZ0V4cE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdCo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7
CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NF
UlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChkLT5yZWdFeHApCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5yZWdFeHApOwotICAgIGlmIChVTkxJS0VMWSghZC0+bGFz
dEluZGV4LmdldCgpLmlzSW50MzIoKSkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5sYXN0
SW5kZXgpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJlZ0V4cCkKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPnJlZ0V4cCk7CisgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqZWN0LT5kLT5sYXN0SW5kZXguZ2V0KCkuaXNJbnQzMigpKSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmxhc3RJbmRleCk7CiB9CiAKIGJvb2wgUmVnRXhw
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggYzlmYjAwYmYwOTA4M2MyZTkxNTc4
NGNhNzNlMjYxNWE0ZTUyZTczMC4uMTFlMDE5NWVhOTg1NjVjYTcxMTlkMDdhNDE2M2YyM2UwMzM0
ZGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgK
QEAgLTgyLDcgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICAgICAgYm9vbCBtYXRjaChFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAppbmRleCBkZjRkYTQxYzAyMTM5NDI3MDY1NGMw
NTFjNmY3YzhlNTI4ODVlYzY1Li4xM2I3OWQ5YjBkZjc5ZmMxMTU5ODg0OTU2NDc5N2UwMmU4NDcz
M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcApA
QCAtNjcsMTYgKzY3LDIyIEBAIGludCBTY29wZUNoYWluTm9kZTo6bG9jYWxEZXB0aCgpCiAgICAg
cmV0dXJuIHNjb3BlRGVwdGg7CiB9CiAKLXZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTY29wZUNoYWluTm9kZSogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PFNjb3BlQ2hhaW5Ob2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChT
dHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIGlmIChuZXh0KQotICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbmV4dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm9iamVjdCk7Ci0gICAg
dmlzaXRvci5hcHBlbmQoJmdsb2JhbE9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2Jh
bFRoaXMpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5uZXh0KQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bmV4dCk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbFRo
aXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBkZDUwMDRiNTAwYTgyY2FjNGVlYWYyYmJjNTc1Yjc4ZmQ4
NDdkZjRhLi5hYzUyYzY3N2JiNTQxOTY3YjQwMDY5MDZjM2Y0Yzc1ZmVmZWE0ODNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC04Nyw3ICs4Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAzMTNhODUxODcxNGQ2YzVmYmEz
NTdiOWUzOWVkM2VmNjJmYzk0YjZjLi40ZWRkZTlmNGJlYTllZmQ5MDU1Y2YyMDYyMjVhOTE4MjMw
YTBhYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
QEAgLTcyNCwyNiArNzI0LDMyIEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkmIHByCiAgICAgfQogfQog
Ci12b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKLXsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9nbG9iYWxPYmplY3Qp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7Ci0gICAgaWYgKG1fcHJv
dG90eXBlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9wcm90b3R5cGUpOwotICAgIGlmICht
X2NhY2hlZFByb3RvdHlwZUNoYWluKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRQ
cm90b3R5cGVDaGFpbik7Ci0gICAgaWYgKG1fcHJldmlvdXMpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZtX3ByZXZpb3VzKTsKLSAgICBpZiAobV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKLSAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwotICAgIGlm
IChtX2VudW1lcmF0aW9uQ2FjaGUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2VudW1lcmF0
aW9uQ2FjaGUpOwotICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgUHJvcGVydHlU
YWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKLSAgICAgICAgZm9y
IChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7
IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Cit2b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTdHJ1Y3R1cmUqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9n
bG9iYWxPYmplY3QpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dsb2Jh
bE9iamVjdCk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvdG90eXBlKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm90b3R5cGUpOworICAgIGlmICh0aGlzT2JqZWN0
LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJl
dmlvdXMpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsK
KyAgICBpZiAodGhpc09iamVjdC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpCisgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3Ig
ZW5kID0gdGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKKyAgICAgICAgZm9yIChQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUt
PmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICBpZiAocHRyLT5zcGVj
aWZpY1ZhbHVlKQogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZwdHItPnNwZWNpZmlj
VmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCmluZGV4IGQ2MDczN2U1ZGZiMjM4MDAwZjhlYTlkMWVjYzVkMDZlODgxZDc1NGQuLjk1OGFk
MWI3NWI4ZmU1N2JiYjU2ZmRlOGJiODM4ZjVlYjJkZjY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xMzAsNyArMTMwLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihF
eGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiAgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0K
ICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3Ry
dWN0dXJlVG9GaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmNwcAppbmRleCAzZTBmMDI4ZWI3MDdjN2UxMTcxMWU4MGFlODRmOTI5ODgzOTA4
YTE0Li4wZmIyOGRlNWZlN2E2YjQwZmJjZWM2NWU3NTQ4MzQxOWYwZmMzNmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC00Mywx
MyArNDMsMTkgQEAgU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCiB7CiB9CiAKLXZv
aWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU3RydWN0
dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBTdHJ1Y3R1cmVDaGFpbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFN0cnVj
dHVyZUNoYWluKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKICAgICBzaXplX3QgaSA9IDA7Ci0gICAg
d2hpbGUgKG1fdmVjdG9yW2ldKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV92ZWN0b3JbaSsr
XSk7CisgICAgd2hpbGUgKHRoaXNPYmplY3QtPm1fdmVjdG9yW2ldKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV92ZWN0b3JbaSsrXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgK
aW5kZXggY2RkNjRlZjZhNjFhZTQxNDQwMzNiMDdmYzFlYzE5MjcwMzFhZGQwYi4uMTkwYzVjMmY0
ZTQ0N2VjYzIwOTE4MmRhZWQ4NDVlNTBmMTlmOThmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCkBAIC01Miw3ICs1Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGNoYWluOwogICAgICAgICB9CiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0K
LSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQg
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7IH0KICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhNzJjNWNlZDU5ZmIzZDhhZjNkMmMw
YzFlODQwNGM4MTMxM2YyYzhiLi5lMzY2YzMyOTU3Y2U4YWFmYjYxMTBjMWE0YjQ3NDY0ZGQwOWUx
MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0y
MiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBqdXN0IGV4
dHJhY3QgdGhlIGJvZGllcyBvZiB0aGUgdmlydHVhbCB2aXNpdENoaWxkcmVuIG1ldGhvZHMKKyAg
ICAgICAgdGhyb3VnaG91dCB0aGUgSlNDZWxsIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBvdXQgaW50
byBzdGF0aWMgbWV0aG9kcywgd2hpY2ggYXJlIAorICAgICAgICBub3cgY2FsbGVkIGZyb20gdGhl
IHZpcnR1YWwgbWV0aG9kcy4gIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4gdHJ5aW5n
IHRvIAorICAgICAgICBtb3ZlIHRoZSB2aXJ0dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJlbiBpbnRv
IG91ciBvd24gY3VzdG9tIHZ0YWJsZSBzdG9yZWQgaW4gCisgICAgICAgIENsYXNzSW5mby4gIFdl
IG5lZWQgdG8gY29udmVydCB0aGUgbWV0aG9kcyB0byBzdGF0aWMgbWV0aG9kcyBpbiBvcmRlciB0
byBiZSAKKyAgICAgICAgYWJsZSB0byBtb3JlIGVhc2lseSBzdG9yZSBhbmQgcmVmZXIgdG8gdGhl
bSBpbiBvdXIgY3VzdG9tIHZ0YWJsZSBzaW5jZSBub3JtYWwgCisgICAgICAgIG1lbWJlciBtZXRo
b2RzIHN0b3JlIHNvbWUgaW1wbGljaXQgaW5mb3JtYXRpb24gaW4gdGhlaXIgdHlwZXMsIG1ha2lu
ZyBpdCAKKyAgICAgICAgaW1wb3NzaWJsZSB0byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5IGluIENs
YXNzSW5mby4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAoVXNlck9i
amVjdEltcDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoVXNlck9iamVjdEltcDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogVXNlck9iamVjdEltcC5oOgorCiAyMDExLTA5LTE0
ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW56
aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVjdG9ycyBpbiBKU0NlbGwgaGllcmFy
Y2h5ICg2LzcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdElt
cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXggYWQz
NjkzYjNhZDEzMDVlMGE5YzI0NmViNmM5OTgxMzM2MWUwZjRiZS4uNmMzYTdkNDk1YWUxNDUxZTcx
MGZmYTlhMGNhNzA0M2E3YzBhZjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVl
L1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0
SW1wLmNwcApAQCAtNDA0LDkgKzQwNCwxNSBAQCBVU3RyaW5nIFVzZXJPYmplY3RJbXA6OnRvU3Ry
aW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lk
IFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChmSlNV
c2VyT2JqZWN0KQotICAgICAgICBmSlNVc2VyT2JqZWN0LT5NYXJrKCk7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVXNlck9iamVj
dEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFVzZXJPYmplY3RJbXAqPihjZWxsKTsKKyAg
ICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+ZkpTVXNlck9iamVjdCkKKyAgICAgICAgdGhpc09iamVjdC0+ZkpTVXNlck9i
amVjdC0+TWFyaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXgg
NDNmZjBkYThkNzU2YWZlNmZmM2Q3Yzg2MzlhOWQzMTNhYWQwNWJiYi4uYTg2YjUyY2IzNjNhOGQ3
ZTAxNGU4ODEyYjM5N2ZhYzdkY2M1ODUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5oCkBAIC02Miw3ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSB0b051
bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmlu
ZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNlck9iamVjdCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDkyN2Y4MzY1MzhjMzQ2OTAwOWYwMjczMTljMDVkMzNhYjU0ZGVm
MC4uODE5MzMzNGIwNGM0NDhjZjExMjQzY2VlNjUzYzQ4N2Q4YWU5Y2E4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEwOSBAQAorMjAxMS0wOS0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJl
cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZp
c2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0
IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAg
IHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3Rh
dGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0
dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAK
KyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIg
b3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVk
IHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUg
CisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4g
b3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBz
dG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQg
CisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0lu
Zm8uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVu
VmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZTo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25D
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNp
dENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRp
b246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0
QXVkaW9Ob2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNKYXZhU2Ny
aXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
c3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5u
ZWw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNo
YW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRDaGls
ZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
U2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldDo6dmlz
aXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVh
bCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwp
OgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6
SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6Cisg
ICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UXRSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBi
cmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRp
bWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgor
CiAyMDExLTA5LTIyICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
RGVmaW5lIGV4cG9ydCBzeW1ib2wgY29ycmVjdGx5IGR1ZSB0byByZW5hbWUgb2YgcGFnZVNjYWxl
RmFjdG9yIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGIwNjYwZDU1NTlmM2Y4NDNkNjQxOGM1
ZjNlYjE4N2U2YjA0Njc5NzIuLmM5YjdhMzQ2NjUyZWJmYjJmZDJhNjI4ODgxZjMzODQxZmY1MDUw
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04MTUsNyArODE1LDcgQEAgX19aTjdXZWJDb3Jl
NkVkaXRvcjZpbmRlbnRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjdDb21tYW5kQzFFdgogX19aTjdX
ZWJDb3JlNkVkaXRvcjdjb21tYW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNkVkaXRv
cjdvdXRkZW50RXYKLV9fWk43V2ViQ29yZTZKU05vZGUxM3Zpc2l0Q2hpbGRyZW5FUk4zSlNDMTFT
bG90VmlzaXRvckUKK19fWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJO
M0pTQzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmU2SlNOb2RlM3B1dEVQTjNKU0M5RXhlY1N0
YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xv
dEUKIF9fWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRQogX19aTjdXZWJDb3JlNlJlZ2lvbjV1bml0
ZUVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKaW5k
ZXggNDQ5YTVjZTEyNzc5ZmQ2ODYzMGUzNmUzMDVjMGNjMTg5MWZiYTcxZi4uM2IxMDg2ZDU3NGY5
Njc3N2Q0Mjk0ZTAxOWRhMzE4ODY4ZmFjYWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwCkBAIC0zOSwxNCArMzksMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi12b2lkIEpTQXR0cjo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdHRyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNB
dHRyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBpbXBsKCktPm93bmVyRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmICghZWxl
bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGVs
ZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250
ZXh0Q3VzdG9tLmNwcAppbmRleCBjOGUxZWNlODFlZWQyMTRiZDQyZWNhYzVkNDBkMzlkZGJhZWYz
NDg3Li40ZTZhNDZkMzE1Njc0N2Y2OTcxMmM0YzJmYjUzYTI5YzFhM2JlNTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBA
IC0zOSwxMyArMzksMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQordm9pZCBKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAm
c19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpT
QXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNBdWRpb0NvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0F1ZGlvQ29udGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBP
dmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRp
bmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIG1f
aW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnRleHRDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0SlNBdWRpb0NvbnRleHQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggMTU1YmE2ZTNjYzUxNWQ0ZWQ5NWVh
MTlmYjQ0MjkzNGRlMDIyNWMwNS4uNzFiMDZjZTFkMjk2Nzg1ODhjNzA2MTVkYjJlMWYwZWY1ZDli
NmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwCkBAIC00OCwxMyArNDgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3ZvaWQgSlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2lu
Zm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNDU1NS
dWxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNDU1NSdWxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDU1NSdWxlKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3QoaW1wbCgpKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0
aGlzT2JqZWN0LT5pbXBsKCkpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25D
dXN0b20uY3BwCmluZGV4IDQ2NWU3ODM0YTVkNjBlYzYyYTBmYTRhOGQ4ZWNlNDQyYmZhZDJlMTQu
LmNkOWFjZWU4ZDE4NGYyMDNmOWZiODI3ZmUyYmUwMDI4ZTU2NTYxY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcApAQCAtNDMsMTMgKzQzLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIC8vIENoZWNrIGZvciBhIENTUyBwcmVm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBhZDY0NmEwNTMyODI3MjViYTA5MmM1
ODIzMjE2ZjdmMDVkOWZjNDYxLi5kYTYwMjhjMDg2NjYzNTVlMjQyMjA2YzI2MTg2YjI5MzA2ODk2
NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDE0ICszOSwyMCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNf
aW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3QoaW1wbCgpLT5jYW52YXMoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KHRoaXNPYmplY3QtPmltcGwoKS0+Y2FudmFzKCkpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3MWQ5OGM5MWE1N2Q3YjYxMzMxN2Rh
NmE3YjQ4MTI1NDcwNTE0MjBjLi41Mjg2N2QzMGE4Njc5MDE5Y2MxOGIzOGI0ODUyZDZhYmUyNjU4
YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCkBAIC01NSwyMyArNTUsMjkgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogdGhpc1YKICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0RPTUdsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RP
TUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIEpTRE9N
U3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7Ci0gICAgZm9y
IChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1h
cDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnNlY29uZCk7CiAKLSAgICBK
U0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3RydWN0b3JzKCkuZW5kKCk7
Ci0gICAgZm9yIChKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdDIgPSBjb25zdHJ1Y3Rv
cnMoKS5iZWdpbigpOyBpdDIgIT0gZW5kMjsgKytpdDIpCisgICAgSlNET01Db25zdHJ1Y3Rvck1h
cDo6aXRlcmF0b3IgZW5kMiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmVuZCgpOworICAg
IGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gdGhpc09iamVjdC0+Y29u
c3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmaXQyLT5zZWNvbmQpOwogCi0gICAgaWYgKG1faW5qZWN0ZWRTY3JpcHQpCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9pbmplY3RlZFNjcmlwdCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1faW5qZWN0ZWRTY3JpcHQpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRDdXJy
ZW50RXZlbnQoRXZlbnQqIGN1cnJlbnRFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDkwMDI4MzA4MzRlMGYzMGIxYmUwZDQyZjgx
NmI5MmU5MzEyNTk0YzAuLjk5YTYzMWZjOTM2OThhNzliMmNiNzBjMTQ0ZWEyZTE3ZWU2YTA5Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApA
QCAtNjQsNyArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SW5q
ZWN0ZWRTY3JpcHQoSlNPYmplY3QqKTsKICAgICAgICAgSlNPYmplY3QqIGluamVjdGVkU2NyaXB0
KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoSlND
OjpTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6
SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAgICAgICAgIERPTVdyYXBwZXJXb3JsZCog
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA0NzdjNmJjZjllOWYxY2E2
YjE2OWEwNGJkNzEzNDdmMzkyOWEyYjkzLi4wNjczYWQ5YWE5N2MzZmQ1NDQ1NzQ0OGNkZmQxNWY5
MjM3OTBlNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCkBAIC03NywxNSArNzcsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlblZpcnR1
YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQor
Cit2b2lkIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvdyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBP
dmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRp
bmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CiAKLSAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKLSAgICBpZiAo
RnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgpKQorICAgIHRoaXNPYmplY3QtPmltcGwoKS0+
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIGlmIChGcmFtZSogZnJhbWUgPSB0
aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChmcmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5jcHAKaW5kZXggMTU4OGQ0ZmVkMDIxZWU2Y2M2NmZmNTM5YjhmMDA0NmEzZWJkOTRh
Ny4uZTEwNjY4OGNiZGRkMGE1NGZlYzEzYjY3Njk1MTk5OTI2MTRiYzA3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTgzLDE0ICs4
MywyMCBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdp
bmRvdz4gZG9tV2luZG93KQogLy8gSlNPYmplY3QgbWV0aG9kcwogLy8gLS0tLQogCi12b2lkIEpT
RE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lk
IEpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTRE9NV2lu
ZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3dTaGVsbCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBP
dmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRp
bmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlm
IChtX3dpbmRvdykKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fd2luZG93KTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX3dpbmRvdykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fd2luZG93KTsKIH0KIAogVVN0cmluZyBKU0RPTVdpbmRvd1NoZWxsOjpjbGFz
c05hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCmluZGV4IGZlOGE0ZmRlMDkxNjIzMWZkMzdkNjNmY2ExNDhkMzg3YmNkZTM4ODUuLmU5
YWJjMTU4MTJjZjQ2N2EwZjI4MjZmNmEzMDU4Yzk4ZTkzZjA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTc3LDcgKzc3LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7
CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNs
b3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpVU3RyaW5nIGNsYXNzTmFtZSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCmluZGV4IGViYzIzYjM2Y2Qz
ZTQ3NTQ2MzdlNDIzZTdiNmNlNmEwMjQ5NzEwM2YuLjAwNGQ4YmU5ZGI1Mjk3YTM4YmNhMGQ2MTM4
MGRjZjI0ZjE1N2YzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcApAQCAtMzQsMTMgKzM0LDE5IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0ph
dmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19p
bmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTSmF2
YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwotICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPihpbXBsKCkp
LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBzdGF0aWNfY2Fz
dDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4odGhpc09iamVjdC0+aW1wbCgpKS0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
CmluZGV4IDM0ZjU5MzEzMzVmZDdhOGJlNzMzMmFmNGJjOTRjYzc2OWFkMDJjY2QuLmZhMTljOWQy
MmMwYTZlZDliZmQ3YjNkNmM0N2NkMjRhZjI2ODJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0zMiwxOCAr
MzIsMjQgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKLXZvaWQgSlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKKwordm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOworICAgIEpTTWVzc2FnZUNoYW5uZWwqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU01lc3NhZ2VDaGFubmVsKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVG
bGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRo
b3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1faW1wbC0+cG9ydDEoKSkK
KyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPnBvcnQxKCkp
CiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdl
UG9ydCogcG9ydCA9IG1faW1wbC0+cG9ydDIoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQg
PSB0aGlzT2JqZWN0LT5tX2ltcGwtPnBvcnQyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChwb3J0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCA4YWRmNGE3YmIzOGVkYTBlNDZiNDA0NDRmNGFkMzhm
YjVjYmYxYTEyLi45ZWVkNzM5MDFjZjdhNzhiYTM3YzA2NGIyMDEwMTUwMDUzYzNhYWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cApAQCAtNDIsMTggKzQyLDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
SlNNZXNzYWdlUG9ydDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEpTTWVzc2FnZVBvcnQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U01lc3NhZ2VQb3J0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
IAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGly
ZWN0bHkgbWFyayBpdCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFu
Z2xlZCBhcmUgbWFya2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4K
LSAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBtX2ltcGwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0
KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09iamVjdC0+bV9pbXBsLT5sb2Nh
bGx5RW50YW5nbGVkUG9ydCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7
CiAKLSAgICBtX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAgICB0aGlz
T2JqZWN0LT5tX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogSlND
OjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0
b20uY3BwCmluZGV4IDQ3ZjU2YTI5ZWY0NGFjYzAxMGY1NzQ5Mjg3MWM2YTBjYWVkNzA4OGQuLmEx
MGQ1MmExOWE3YjM4YjEzNDA2OTRmMjQ1M2ZhZTg0MmQ4ODQ4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKQEAgLTM1LDYg
KzM1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwogYm9vbCBK
U05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1h
cCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBp
bXBsLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAt
NDYsMTggKzUxLDE5IEBAIEpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVuCiAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+Z2V0TmFtZWRJ
dGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLXZvaWQgSlNOYW1l
ZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTmFt
ZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICBKU05hbWVkTm9kZU1hcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFw
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAgIC8vIFdl
IG5lZWQgdG8ga2VlcCB0aGUgd3JhcHBlciBmb3Igb3VyIHVuZGVybHlpbmcgTmFtZWROb2RlTWFw
J3MgZWxlbWVudAogICAgIC8vIGFsaXZlIGJlY2F1c2UgTmFtZWROb2RlTWFwIGFuZCBBdHRyIHJl
bHkgb24gdGhlIGVsZW1lbnQgZm9yIGRhdGEsIGFuZAogICAgIC8vIGRvbid0IGtub3cgaG93IHRv
IGtlZXAgaXQgYWxpdmUgY29ycmVjdGx5LgogICAgIC8vIEZJWE1FOiBGaXggdGhpcyBsaWZldGlt
ZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCi0gICAgRWxlbWVudCogZWxlbWVu
dCA9IGltcGwoKS0+ZWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzT2JqZWN0
LT5pbXBsKCktPmVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA1MWUzYmI4NmFhZWUzMmI1ZjIx
NjU5YmUxMzdjODJhNDQzMmZkZjExLi45NzE1MjY2NTBhYzRiYmIwNDUxNDUxZmIyNjRlNDQ0ZmI1
MWM0NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAK
QEAgLTE5MiwxNCArMTkyLDIwIEBAIFNjb3BlQ2hhaW5Ob2RlKiBKU05vZGU6OnB1c2hFdmVudEhh
bmRsZXJTY29wZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSogbm9kZSkKICAgICByZXR1cm4g
bm9kZTsKIH0KIAotdm9pZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEpTTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAg
ICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTm9kZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9k
ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBOb2RlKiBub2RlID0gbV9pbXBsLmdldCgpOwor
ICAgIE5vZGUqIG5vZGUgPSB0aGlzT2JqZWN0LT5tX2ltcGwuZ2V0KCk7CiAgICAgbm9kZS0+dmlz
aXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3Qobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckN1c3RvbS5jcHAKaW5kZXggYzE1MWM1NGM0YTAyYTk0ZjViMjJkNDNhYTY2YTJlNDE4ZmUz
MjE0MS4uNTYwODFlYzEzNTY5NWNiMGIwODIxYzI2Y2NmNTJiN2NhNjZjYjk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC0z
NiwxMyArMzYsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIEpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKK3ZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlRmls
dGVyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNOb2RlRmlsdGVyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNOb2RlRmlsdGVy
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KGltcGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09i
amVjdC0+aW1wbCgpKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmluZGV4IDAyZDEw
OGQyNGY1ZGZhYWUwOTNhMWRlY2NhNWIyNzZjNzEzODhiMGEuLjcwNTU5NDYyYTU3ODg1ZDk2NmIw
OTVjYTVmMTM1NWViMDAyODAyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI5LDE0ICsyOSwyMCBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNOb2RlSXRlcmF0
b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTm9kZUl0ZXJh
dG9yOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU05vZGVJdGVy
YXRvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZUl0ZXJhdG9yKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChOb2RlRmlsdGVyKiBm
aWx0ZXIgPSBtX2ltcGwtPmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB0
aGlzT2JqZWN0LT5tX2ltcGwtPmZpbHRlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJv
b3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwCmluZGV4IGRkMjBmYmEwYjc4M2QwMTNm
NDI0YjU3NTJlNWNhN2U4OTAxMTdhMzQuLjg3ZTZiZjYzOWQ5MGU0M2Q3NDkzNDIyM2FjYmE4ZjAy
MDdhMTlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxl
bWVudEluc3RhbmNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwxOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRy
ZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxk
cmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU1ZHRWxlbWVudEluc3RhbmNlOjp2aXNp
dENoaWxkcmVuKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTU1ZHRWxlbWVudEluc3RhbmNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNT
VkdFbGVtZW50SW5zdGFuY2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09i
amVjdC0+aW1wbCgpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hh
cmVkV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVk
V29ya2VyQ3VzdG9tLmNwcAppbmRleCAzZTM3OTY5MzdjZGVhOGZlNWQ0YzZhYjA3ZjI0ZGYyZWE5
ZWVmNGRjLi45ZjM5YTE0ZTc1YzNjNTRkNTEwYTEzM2M3ZjcwYWIyNjhhNzQwMGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3Bw
CkBAIC00MywxNCArNDMsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lk
IEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNTaGFyZWRXb3JrZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU1NoYXJlZFdvcmtlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCktPnBvcnQoKSkKKyAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnBvcnQoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCAyMWUwMGIxNjhjMjI1
NDExODExNGQyYTQ5MWUxZTRlMjA1MTFjNmU2Li4yZDcyNmFiYjE3ZjhmNGYzNzQ4M2E1YTQwMjNh
ZTNhMGM2NDgwY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5
bGVTaGVldEN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwordm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1N0eWxlU2hlZXQqIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxKU1N0eWxlU2hlZXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwogfQogCiBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKaW5kZXggZGZmMzQ2OWNlMjk4MDc0NmE1MjMx
ZTVkMTM2Mzk3NDUwYmZjMjY1Yy4uOTVlZGMwNWE1YTgxNjY3Y2M2YTFmMDJlYjhhMzc5YTcxMmQx
MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2Vy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJD
dXN0b20uY3BwCkBAIC0yOCwxNSArMjgsMjEgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXZvaWQgSlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorCit2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIEpTVHJlZVdhbGtlciogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PEpTVHJlZVdhbGtlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gbV9pbXBsLT5maWx0ZXIo
KSkKKyAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5maWx0
ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRlcik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAppbmRleCA1OWI2MzkyMDJlZGUyNjJhYTQxM2U4NmZiMDA5OTQ3NDk5
MmM2MWZlLi4yNDU2YjdkNzE3ZjZiOGRkODEwYzc1NWFiZjhlOWNjZDg0N2JmZjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCkBAIC0xOTIsMTMgKzE5MiwxOSBAQCBzdGF0aWMgSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2Vi
R0xFeHRlbgogICAgIHJldHVybiBqc051bGwoKTsKIH0KIAotdm9pZCBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Cisg
ICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpOwogfQogCiBKU1ZhbHVl
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggODg3YTNiYzA0NWU5YmQ3MWI3ZDRmMmI2ZjE5OWMzMWQ2N2VkNzA2
Yi4uZjkwMDQ5NjBiNDVkZjRiMWJmNWJmYjAyOTYzODgzYzcxYjNiNDA1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBA
IC01MywxOSArNTMsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3ZvaWQgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQg
SlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNXb3JrZXJDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNXb3JrZXJDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSBpbXBsKCktPm9wdGlv
bmFsTG9jYXRpb24oKSkKKyAgICBpZiAoV29ya2VyTG9jYXRpb24qIGxvY2F0aW9uID0gdGhpc09i
amVjdC0+aW1wbCgpLT5vcHRpb25hbExvY2F0aW9uKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0g
aW1wbCgpLT5vcHRpb25hbE5hdmlnYXRvcigpKQorICAgIGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5h
dmlnYXRvciA9IHRoaXNPYmplY3QtPmltcGwoKS0+b3B0aW9uYWxOYXZpZ2F0b3IoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG5hdmlnYXRvcik7CiAKLSAgICBpbXBsKCktPnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5pbXBsKCktPnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogYm9vbCBKU1dvcmtlckNvbnRleHQ6Omdl
dE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDI1NzU3
NTY2NjZkZmU2MGU3YTNkMjRkYTdhMDkxZWEwMzNiOTFiZDIuLjYwOTEzODM2MTY4NWE1OWI1NTEw
YWE1NWQxNDFhMmIyNDk1MmE5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC01NCwyOCArNTQsMzQgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTWE1MSHR0
cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTWE1M
SHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNYTUxIdHRwUmVxdWVzdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTWE1MSHR0cFJlcXVl
c3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0g
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYg
KFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSBtX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkp
CisgICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB0aGlzT2JqZWN0LT5tX2lt
cGwtPm9wdGlvbmFsVXBsb2FkKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh1cGxv
YWQpOwogCi0gICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3VtZW50ID0gbV9pbXBsLT5vcHRp
b25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3VtZW50ID0g
dGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCiAgICAgICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZURvY3VtZW50KTsKIAotICAgIGlmIChBcnJheUJ1ZmZl
ciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUFycmF5QnVm
ZmVyKCkpCisgICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gdGhpc09i
amVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCiAjaWYgRU5BQkxFKFhI
Ul9SRVNQT05TRV9CTE9CKQotICAgIGlmIChCbG9iKiByZXNwb25zZUJsb2IgPSBtX2ltcGwtPm9w
dGlvbmFsUmVzcG9uc2VCbG9iKCkpCisgICAgaWYgKEJsb2IqIHJlc3BvbnNlQmxvYiA9IHRoaXNP
YmplY3QtPm1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAgICAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiAjZW5kaWYKIAotICAgIG1faW1wbC0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmlu
ZGV4IDM1NDg5ZGM0N2E4ZTAxNGVmMjQyNjIzNjQxY2ExZWE3YWE0NzQyZjQuLjA5OTQyZjVlZWQw
NGZkM2IxY2ZmZDEzNWQyYjE4Mjc5YTFhNzA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zNywxNCArMzcsMjAgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTWFBh
dGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTWFBh
dGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNYUGF0
aFJlc3VsdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTWFBhdGhSZXN1bHQqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAg
IENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgY29uc3QgWFBhdGg6OlZh
bHVlJiB4cGF0aFZhbHVlID0gaW1wbCgpLT52YWx1ZSgpOworICAgIGNvbnN0IFhQYXRoOjpWYWx1
ZSYgeHBhdGhWYWx1ZSA9IHRoaXNPYmplY3QtPmltcGwoKS0+dmFsdWUoKTsKICAgICBpZiAoeHBh
dGhWYWx1ZS5pc05vZGVTZXQoKSkgewogICAgICAgICBjb25zdCBYUGF0aDo6Tm9kZVNldCYgbm9k
ZXNUb01hcmsgPSB4cGF0aFZhbHVlLnRvTm9kZVNldCgpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5vZGVzVG9NYXJrLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDA5NTI4ZDU2YmM1
OTk1OTY3ZGIxYTQ3NjFkMDViOGFhYjdlZmZlOWIuLjUyMDNmZGYwYzQwNzE4ODZiZWNiZDQ2MThj
MTFhNmJjOGU5ZDNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC04NzcsNyArODc3LDggQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAKICAgICAjIHZpc2l0IGZ1bmN0aW9uCiAgICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbikg
ewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTtcblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZp
c2l0b3ImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpO1xuXG4iKTsKICAg
ICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4ifSA9IDE7
CiAgICAgfQogCkBAIC0yMjAwLDIxICsyMjAxLDI3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4g
JiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9
KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlQodGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICAgICAgaWYgKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0pIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRo
aXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJG51bUNhY2hlZEF0dHJpYnV0ZXMgPiAwKSB7
CiAgICAgICAgICAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hl
ZEF0dHJpYnV0ZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAobV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIilcbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZtXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNP
YmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIik7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggZmM2ODNhNWRmOTQ1N2YxMTI2YjI5ODdkOWZkMTYwNWY3MGEz
MTFmMy4uMTE5YjQ5ZTA0MDY5MmExZDhlMzkwY2RmMTBlMzA4NmRjYjdhN2E4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTE4NzAsMTYgKzE4NzAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXZvaWQgSlNUZXN0T2JqOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNp
dG9yKTsKK30KKwordm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Rlc3RPYmoqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAg
ICBpZiAobV9jYWNoZWRBdHRyaWJ1dGUxKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNo
ZWRBdHRyaWJ1dGUxKTsKLSAgICBpZiAobV9jYWNoZWRBdHRyaWJ1dGUyKQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmbV9jYWNoZWRBdHRyaWJ1dGUyKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTEpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTEpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NhY2hlZEF0
dHJpYnV0ZTIpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZEF0
dHJpYnV0ZTIpOwogfQogCiAvLyBDb25zdGFudCBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggOGQ1MzQxMmU4
Njc2Mzk2YzRlMTYyMTUzZTEyYzdkM2I4ZTc0ZGQxZi4uZjI5ZGM4ZDU5MjEzOGYwM2EyODlhZGEx
NjFkNWFlODkwNzdmM2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1f
Y2FjaGVkQXR0cmlidXRlMTsKICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1f
Y2FjaGVkQXR0cmlidXRlMjsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNs
b3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6
U2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpT
Qzo6U2xvdFZpc2l0b3ImKTsKIAogCiAgICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IDRiYmU2NWUwMTEzZGJmYzk4NGQ3
YTU0NjQ0N2RkZTY1YzA5OTI2YWEuLjI3YmYxYzE1ZTk1NDhlMTMzNTc2ODIxN2NmYjY1OGM0Mjc2
MDVhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcApAQCAtNjIs
MTAgKzYyLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7Ci0gICAgICAgIFF0SW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8UXRJbnN0
YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAgICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgUXRSdW50aW1l
T2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lT2JqZWN0Kj4oY2VsbCk7
CisgICAgICAgIFJ1bnRpbWVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgICAgIFF0SW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5j
ZSo+KHRoaXNPYmplY3QtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAgICAgICAgIGlmIChpbnN0
YW5jZSkKICAgICAgICAgICAgIGluc3RhbmNlLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKaW5kZXggNzNkZDJiZjU2
MmVlZjEyZjIyMWM2NjMyNjA4OTc5ODMzNjgyOGJmMC4uOTVlYThkOTM0N2Y1MjQ2MjVkZjRlNjky
NTVmM2Y5NGQ1ZjRkNTkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cApAQCAtMTQzOSwxMCArMTQzOSwxNiBAQCB2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbgogICAgIGQt
Pm1fYWxsb3dQcml2YXRlID0gYWxsb3dQcml2YXRlOwogfQogCi12b2lkIFF0UnVudGltZU1ldGFN
ZXRob2Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFF0UnVudGlt
ZU1ldGFNZXRob2Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIFF0UnVudGltZU1ldGhvZDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBRV19E
KFF0UnVudGltZU1ldGFNZXRob2QpOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFF0UnVudGltZU1ldGFNZXRob2QqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kKj4oY2VsbCk7CisgICAg
UXRSdW50aW1lTWV0aG9kOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IFF0UnVudGltZU1ldGFNZXRob2REYXRhKiBkID0gdGhpc09iamVjdC0+ZF9mdW5jKCk7CiAgICAg
aWYgKGQtPm1fY29ubmVjdCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmQtPm1fY29ubmVjdCk7
CiAgICAgaWYgKGQtPm1fZGlzY29ubmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCmluZGV4IDkwNmQxMDhlMWU3NjliMjU3NmFiZTNkZDEwNmQ3NDM1YjhiZjI4NzAuLmRlMjEz
YzIwOTgxMjMxZGFhZmY2ZjZjYmVmNzFjOTM1ZDVhN2IwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaApAQCAtMTY4LDcgKzE2OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBt
b2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZU1ldGFNZXRo
b2REYXRhKiBkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1l
TWV0YU1ldGhvZERhdGEqPihkX3B0cik7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuaAppbmRleCBmZjdiNmQ3ZmI1NDUzZmM3NTNhNjEyYzIxNGMwY2YyOThiYjczZjZmLi44YWMw
ZWY3MGNhZWFjMmMyMGE4YWUxZDdlMDg3YjYyZDI1ZWI4MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKiB3b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gbV93b3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKLSAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYpIGluCisgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9y
IEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJikgaW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcC4KICAg
ICAgICAgV29ya2VyTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fbmF2aWdhdG9yLmdldCgpOyB9CiAgICAgICAgIFdvcmtlckxvY2F0aW9uKiBvcHRpb25hbExv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKaW5kZXggNTNkYjBmYmEyNWNmZTZlOTQyYmUwOTRhODE3MGE4NzA5OGQzY2M2YS4u
YWZjN2JjZTY5NDk2YWRlMzdmMGYzMGY5ZWFmNWJlMTBmOGQwY2Q3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCkBAIC01Niw3ICs1Niw3IEBAIF9aTjdXZWJDb3JlMjBTaGFkb3dDb250ZW50RWxl
bWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3Ry
dWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdX
ZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pON1dlYkNv
cmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFOwotX1pO
N1dlYkNvcmU2SlNOb2RlMTN2aXNpdENoaWxkcmVuRVJOM0pTQzExU2xvdFZpc2l0b3JFOworX1pO
N1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9y
RTsKIF9aTjdXZWJDb3JlNkpTTm9kZTNwdXRFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50
aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU2
SlNOb2RlNnNfaW5mb0U7CiBfWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108340</attachid>
            <date>2011-09-22 08:52:01 -0700</date>
            <delta_ts>2011-09-22 23:53:08 -0700</delta_ts>
            <desc>Fix bad merge</desc>
            <filename>bug-68404-20110922085206.patch</filename>
            <type>text/plain</type>
            <size>118456</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3MTgKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzNjhiZjQ5ZTkwNjY3YzQ1OTA2MWEzMjE3NmJhYmYyZjNkM2U1NDQyLi4wZDJj
N2E1YjcxNDUzNmRmMzRjMmNiMGY3ODJkNDA0OWVjNTY5ZjQ1IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjIgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3RhdGljIHZl
cnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0IHRoZSBi
b2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAgIHRocm91
Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3RhdGljIG1l
dGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0dWFsIG1l
dGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAKKyAgICAg
ICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIgb3duIGN1
c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVkIHRvIGNv
bnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUgCisgICAg
ICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4gb3VyIGN1
c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBzdG9yZSBz
b21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQgCisgICAg
ICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0luZm8uCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA5LTIx
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIENy
YXNoIGluIFJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzIHdoZW4gR3JhcGhpY3NDb250ZXh0J3Mg
cGFpbnRpbmcgaXMgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZkODEwNTk2
My4uMWRlZmI0ZTVlNTZlMWY1Y2Q1NTM4OTdmYTRiYjU4NTUzNTllNTA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5NiwxMyArMTk2LDE5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
Q29uc3RydWN0RGF0YSYpOwogICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoKHN0YXRp
Y19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c19pbmZv
KTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAgICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlzT2JqZWN0KSksICZKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQYXJlbnQ6OnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgICAgIFBhcmVudDo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5QYXJlbnQ6OnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAg
IFBhcmVudDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdGhp
c09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAg
ICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggM2UzYzFiM2M3OGFkNGU0YTdmNjY1N2M0M2ZkZDljNWJlMjViODQwMi4uODJmYzQzZDU0
ZGJkODA3OGM0ZTEyMzdkNGUwNTg2YmU2ZGNmYjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6
dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0
dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwg
aW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUg
CisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBh
biBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1
YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3Jl
ZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2Rz
IHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUg
ZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNl
IG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZv
cm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRv
IHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZvLgorCisgICAgICAgICogQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkdldHRl
clNldHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FjdGl2
YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuVmly
dHVhbCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3Bl
T2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2Nv
cGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29w
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAg
IChKU0M6OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OlJlZ0V4cE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTY29wZUNo
YWluTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWlu
Tm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6dmlz
aXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorCiAyMDExLTA5
LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgMzItYml0IGNh
bGwgY29kZSBjbG9iYmVycyB0aGUgZnVuY3Rpb24gY2VsbCB0YWcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDUyOGE1MTQ4Y2Y1NzRlNGJlZGFiZWM1YzIzZTM4
NjI1ZjE3MjA5M2IuLjg0ZTllODgzYzMyOWMzYmFlNjc2NjgwNmM5MzI5MjdhNDlkM2QyOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTYzLDEwICsxNjMs
MTEgQEAgX19aTjNKU0MxM1N0YXRlbWVudE5vZGU2c2V0TG9jRWlpCiBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxMGdsb2JhbEV4ZWNFdgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVH
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEVqCiBf
X1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEz
dmlzaXRDaGlsZHJlbkVSTlNfMTFTbG90VmlzaXRvckUKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDE2YWRkU3RhdGljR2xvYmFsc0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJ
bmZvRWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFagogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjB2aXNp
dENoaWxkcmVuVmlydHVhbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9i
amVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1
UHV0UHJvcGVydHlTbG90RSAgCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0aW5pdEVQTlNfOEpT
T2JqZWN0RQpAQCAtMTgwLDcgKzE4MSw2IEBAIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlk
VGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2
CiBfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0
dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3RhdGVFCi1fX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0
MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVP
d25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVF
RVB2Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyOGZpbmFsaXpl
RU5TXzZIYW5kbGVJTlNfN1Vua25vd25FRUVQdgogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lckQy
RXYKQEAgLTI3NSwxMSArMjc1LDExIEBAIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185RXhlY1N0YXRl
RQogX19aTjNKU0M2UmVnRXhwNW1hdGNoRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5n
RWlQTjNXVEY2VmVjdG9ySWlMbTMyRUVFCiBfX1pOM0pTQzZSZWdFeHA2Y3JlYXRlRVJOU18xMkpT
R2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NFCiBfX1pOM0pTQzZSZWdF
eHBEMUV2Ci1fX1pOM0pTQzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9y
RQogX19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRQog
X19aTjNKU0M3SlNBcnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQzdKU0FycmF5MTVzZXRTdWJjbGFzc0RhdGFFUHYKIF9fWk4zSlND
N0pTQXJyYXkxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVy
dHlTbG90RQorX19aTjNKU0M3SlNBcnJheTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk5TXzExU2xv
dFZpc2l0b3JFCiBfX1pOM0pTQzdKU0FycmF5NnNfaW5mb0UKIF9fWk4zSlNDN0pTQXJyYXk5c2V0
TGVuZ3RoRWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1
Y3R1cmVFCkBAIC0zMDgsNyArMzA4LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxMmRlZmluZUdldHRl
ckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfagogX19aTjNKU0M4SlNPYmpl
Y3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfagog
X19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cEdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBTZXR0ZXJFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVSTlNf
MTFTbG90VmlzaXRvckUKK19fWk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlND
ZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5
RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3QxNGRl
bGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk4zSlNDOEpTT2JqZWN0MTV1bndyYXBw
ZWRPYmplY3RFdgpAQCAtMzI0LDYgKzMyNCw3IEBAIF9fWk4zSlNDOEpTT2JqZWN0MTdwdXRXaXRo
QXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFsdWVFagogX19aTjNKU0M4SlNPYmpl
Y3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90
RQogX19aTjNKU0M4SlNPYmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNTdGF0ZUVS
ZFJOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBO
U185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2Rl
RQorX19aTjNKU0M4SlNPYmplY3QyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOU18xMVNsb3RWaXNp
dG9yRQogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pT
QzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5T
XzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5rbm93bkVFRQogX19aTjNKU0M4SlNPYmplY3QyM2Fs
bG9jYXRlUHJvcGVydHlTdG9yYWdlRVJOU18xMkpTR2xvYmFsRGF0YUVtbQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBhMGQ1NDY4
MDY4OGE5YTRlODQwNGY5ZDY1ZDZmNmJjMzdlMDk2NjVkLi4xMGViNGU2ZjhlNzI0YWJmYzljODBl
ZGM1NTkzODY4N2M5MTNiMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMzc4LDExICszNzgsMTIgQEAgRVhQT1JUUwogICAg
ID91bndyYXBwZWRPYmplY3RASlNPYmplY3RASlNDQEBVQUVQQVYxMkBYWgogICAgID91dGY4QFVT
dHJpbmdASlNDQEBRQkU/QVZDU3RyaW5nQFdURkBAX05AWgogICAgID92YWxpZGF0ZVZhbHVlQE1h
cmtTdGFja0BKU0NAQEtBWFZKU1ZhbHVlQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBKU0dsb2Jh
bE9iamVjdEBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5A
SlNPYmplY3RASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgotICAgID92aXNpdENoaWxkcmVu
QEpTV3JhcHBlck9iamVjdEBKU0NAQEVBRVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0
Q2hpbGRyZW5AU2NvcGVDaGFpbk5vZGVASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgogICAg
ID92dGFibGVBbmNob3JASW50ZXJuYWxGdW5jdGlvbkBKU0NAQEVBRVhYWgorICAgID92aXNpdENo
aWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JA
MkBAWgorICAgID92aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFW
U2xvdFZpc2l0b3JAMkBAWgorICAgID92aXNpdENoaWxkcmVuVmlydHVhbEBKU0dsb2JhbE9iamVj
dEBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5WaXJ0dWFs
QEpTT2JqZWN0QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJl
blZpcnR1YWxAU2NvcGVDaGFpbk5vZGVASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgogICAg
ID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCiAgICAgP3dhaXRG
b3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICA/d3JpdGFibGVAUHJvcGVy
dHlEZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCBhZjZhNTZmOWJlMmE2MDQ3
ODJjODUwYzMxZWY1OWQyZjQwY2RmNTBjLi5lZjk3YjBmYzU5YjQ0NWZlODM0OGQzZGY0OTAyZTBk
ZGUyYmQ0YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmNwcApAQCAtNDMsMTUgKzQzLDIxIEBAIHZvaWQgRGVidWdnZXJB
Y3RpdmF0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBhY3RpCiAgICAgbV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdGF0aWNf
Y2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKSk7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3Rp
dmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWJ1Z2dl
ckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxEZWJ1Z2dlckFj
dGl2YXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICBpZiAobV9hY3RpdmF0aW9uKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9h
Y3RpdmF0aW9uKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uKQorICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uKTsKIH0KIAogVVN0cmluZyBE
ZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggY2NkYmRlOGY2
Y2I0MGFiNzE5ZDU0ODZhMGE0ODU0ZTcwOGZhOWY3Mi4uYjBjMjBjMmNjOTM5ZmQ5YmMxNzRkODUy
N2Y4MGQ3ODBmYWEyNjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IGZkNjY4YmQ5
ZWRiNjk4MTFjYmEzOTdlYTc4ZGNiNzEyOTVkYzUyOWQuLmMzOWM1N2ZjNGRkZDMwMjYzYzcwNzE1
NDBlNTA4ZGNhYTEwZDhmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwpCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwog
ICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5
cGUpIHsKLSAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAg
ICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwpCiAjZWxzZQogICAgICAgICBBU1NFUlQoIW1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKICAgICAgICAgbV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICBjZWxsLT52aXNpdENoaWxkcmVuKCp0aGlz
KTsKKyAgICAgICAgY2VsbC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogICAgICAgICBB
U1NFUlQobV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCkBAIC04MCw3
ICs4MCw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCkKICAgICAgICAgYXNBcnJheShjZWxsKS0+dmlzaXRDaGlsZHJlbkRpcmVjdCgqdGhpcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2VsbC0+dmlzaXRDaGlsZHJlbigqdGhpcyk7
CisgICAgY2VsbC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogfQogCiB2b2lkIFNsb3RW
aXNpdG9yOjpkcmFpbigpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJh
aW4oKQogI2lmIEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCiAgICAgICAgICAgICAgICAg
bV92aXNpdGVkVHlwZUNvdW50cy5jb3VudChjZWxsKTsKICNlbmRpZgotICAgICAgICAgICAgICAg
IGNlbGwtPkpTQ2VsbDo6dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgICAgICAgICAgICAgSlND
ZWxsOjp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoY3Vy
cmVudC5tX3ZhbHVlcyA9PSBlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggZWM2Y2M4ZjFjNzIwN2RhODNh
ZjE1MTQyNmI5ZjU4MWIxOTg0NmM0OS4uYmVmMzBkOGJiMzE4ZTJlYmU2ZmQ0YzM0YzQ2ODlkZjU5
MTYzMmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CkBAIC00MywyNSArNDMsMzEgQEAgQXJndW1lbnRzOjp+QXJndW1lbnRzKCkKICAgICAgICAgZGVs
ZXRlIFtdIGQtPmV4dHJhQXJndW1lbnRzOwogfQogCi12b2lkIEFyZ3VtZW50czo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8QXJndW1lbnRzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogCi0gICAgaWYgKGQtPnJlZ2lzdGVyQXJyYXkpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKGQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQtPm51bVBhcmFtZXRlcnMpOworICAg
IGlmICh0aGlzT2JqZWN0LT5kLT5yZWdpc3RlckFycmF5KQorICAgICAgICB2aXNpdG9yLmFwcGVu
ZFZhbHVlcyh0aGlzT2JqZWN0LT5kLT5yZWdpc3RlckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5k
LT5udW1QYXJhbWV0ZXJzKTsKIAotICAgIGlmIChkLT5leHRyYUFyZ3VtZW50cykgewotICAgICAg
ICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50cyA9IGQtPm51bUFyZ3VtZW50cyAtIGQtPm51bVBh
cmFtZXRlcnM7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGQtPmV4dHJhQXJndW1lbnRz
LCBudW1FeHRyYUFyZ3VtZW50cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPmV4dHJhQXJndW1l
bnRzKSB7CisgICAgICAgIHVuc2lnbmVkIG51bUV4dHJhQXJndW1lbnRzID0gdGhpc09iamVjdC0+
ZC0+bnVtQXJndW1lbnRzIC0gdGhpc09iamVjdC0+ZC0+bnVtUGFyYW1ldGVyczsKKyAgICAgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4
dHJhQXJndW1lbnRzKTsKICAgICB9CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmZC0+Y2FsbGVlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+ZC0+Y2FsbGVlKTsKIAotICAgIGlmIChk
LT5hY3RpdmF0aW9uKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+YWN0aXZhdGlvbik7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPmQtPmFjdGl2YXRpb24pCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5kLT5hY3RpdmF0aW9uKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OmNvcHlU
b1JlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1h
eFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDU2
MTEzZGZhNjFkMDkyMjVkMWNiYzE5YzM5Y2YzMmExNDMyM2I2NzIuLjVlMjMwNzQ2ZGMzY2NlMTNi
MzBmNTE2YWQ1MjI2NzliNWFmOTk5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCkBAIC05MCw3ICs5MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCBmaWxsQXJnTGlz
dChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDBjNTkzMTk3NjVhMWVjZDE1Njc0
ZmRlZjA2YjcxZTRkZGQ2YTVmMWUuLjkxZjZlZmEyNTAwNDMxNGNmYzZhOGM5ZWI2MDQyNjU4OTkw
ODJjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CkBAIC0yMzAsMTQgKzIzMCwyMCBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjpqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIEFTU0VSVCghbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrKTsKIH0KIAotdm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2
aXNpdG9yKTsKK30KKwordm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEV2YWxFeGVjdXRhYmxlKiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgU2NyaXB0RXhlY3V0YWJs
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9ldmFsQ29kZUJsb2NrKQotICAg
ICAgICBtX2V2YWxDb2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZXZhbENvZGVCbG9jaykKKyAgICAgICAg
dGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0K
IAogdm9pZCBFdmFsRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQpAQCAtMzY2LDE0ICszNzIsMjAg
QEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQogI2VuZGlmCiB9CiAKLXZv
aWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2lu
Zm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgUHJvZ3Jh
bUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4o
dmlzaXRvcik7Ci0gICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jaykKLSAgICAgICAgbV9wcm9ncmFt
Q29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVj
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2spCisgICAgICAgIHRoaXNPYmpl
Y3QtPm1fcHJvZ3JhbUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAKIHZv
aWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCkBAIC01NzQsMTggKzU4NiwyNCBAQCB2
b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRAogICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPmdldEpJVENvZGVXaXRoQXJpdHlDaGVj
aygpOwogfQogCi12b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FT
U0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFi
bGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fbmFtZVZhbHVlKQotICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmbV9uYW1lVmFsdWUpOwotICAgIGlmIChtX2NvZGVCbG9ja0ZvckNh
bGwpCi0gICAgICAgIG1fY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7
Ci0gICAgaWYgKG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQotICAgICAgICBtX2NvZGVCbG9ja0Zv
ckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICBpZiAodGhpc09iamVjdC0+bV9uYW1lVmFsdWUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX25hbWVWYWx1ZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY29kZUJs
b2NrRm9yQ2FsbCkKKyAgICAgICAgdGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsLT52aXNp
dEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpCisgICAgICAgIHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRp
c2NhcmRDb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCAzYmJmMDBhYTMxNjA2ZWU4Y2NhZmVlNGI2NDNlYzFhOWZmNWJkYmRlLi5hMDBjOWUzODBk
ZTNlMzU1MzFmY2EwZGNmOWUyM2IyMDMzMmU1MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNjQsNyArMzY0LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sKTsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlwZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZvaWQgdW5saW5rQ2FsbHMo
KTsKIAogICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwpAQCAt
NDI3LDcgKzQyOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQcm9ncmFtRXhlY3V0YWJs
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgSlNPYmplY3QqIGNv
bXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5
cGUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogICAgICAgICB2b2lkIHVubGlua0NhbGxzKCk7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1D
b2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKQEAgLTU4MCw3ICs1ODIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW1ib2xUYWJsZTsgfQogCiAgICAgICAgIHZvaWQgZGlzY2FyZENvZGUoKTsK
LSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQg
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0
YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24p
OwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAppbmRleCA5OTAyYjc2OGYyNjg2NjliODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li45
MTc5NTM0ODBlNTA0NzQ3YWI0ZDA2NWM5NjQ1YzdmZmU4MDljYjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTMwLDE2ICszMCwyMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEdldHRlclNldHRlcjo6c19pbmZv
ID0geyAiR2V0dGVyU2V0dGVyIiwgMCwgMCwgMCB9OwogCi12b2lkIEdldHRlclNldHRlcjo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgR2V0dGVyU2V0dGVyOjp2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLQotICAgIGlmIChtX2dldHRlcikKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fZ2V0dGVyKTsKLSAgICBpZiAobV9zZXR0ZXIpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZtX3NldHRlcik7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBHZXR0ZXJTZXR0ZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxHZXR0ZXJTZXR0ZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2dl
dHRlcikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2V0dGVyKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9zZXR0ZXIpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3NldHRlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAxOWNkYmRkYjAxMmFhMjQ5
NWE2NDJkYjBmMDI0OGU3MjZiYjUxOGZmLi5hMzEyZjczMGRkMzVmYzBiZWVjMzhkMzcwNzEyNWMz
MDMyMWFhYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaApAQCAtNTMsNyArNTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBnZXR0ZXJTZXR0ZXI7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBj
b25zdCB7IHJldHVybiBtX2dldHRlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0
KGdsb2JhbERhdGEsIHRoaXMsIGdldHRlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVk
NTQ5NzFjOGZiZDg4NWUuLmE2MWQzNzFmY2U3NTFiYzMxMWVkZDUyN2E4OTdlMmZhMzFkN2JjOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApA
QCAtNjMsMjIgKzYzLDI4IEBAIEpTQWN0aXZhdGlvbjo6fkpTQWN0aXZhdGlvbigpCiAgICAgc3Rh
dGljX2Nhc3Q8U2hhcmVkU3ltYm9sVGFibGUqPihtX3N5bWJvbFRhYmxlKS0+ZGVyZWYoKTsKIH0K
IAotdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQWN0aXZhdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAgICAvLyBObyBu
ZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3Rl
ckZpbGUuCi0gICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5ID0gbV9yZWdp
c3RlckFycmF5LmdldCgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJh
eSA9IHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheS5nZXQoKTsKICAgICBpZiAoIXJlZ2lzdGVy
QXJyYXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXksIG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXMocmVnaXN0ZXJBcnJheSwgdGhpc09iamVjdC0+bV9udW1QYXJhbWV0ZXJzTWludXNUaGlz
KTsKIAogICAgIC8vIFNraXAgdGhlIGNhbGwgZnJhbWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0aGUg
cGFyYW1ldGVycyBhbmQgdmFycy4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFy
cmF5ICsgbV9udW1QYXJhbWV0ZXJzTWludXNUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVI
ZWFkZXJTaXplLCBtX251bUNhcHR1cmVkVmFycyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
cmVnaXN0ZXJBcnJheSArIHRoaXNPYmplY3QtPm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJl
Z2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgdGhpc09iamVjdC0+bV9udW1DYXB0dXJl
ZFZhcnMpOwogfQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAppbmRleCBkODYzNTkzYjMy
YjE4MDRiNjE2ZTdiYTViYzhiZjFjYzVhNmE1ZjlhLi45OTEwOTc2ZDM0Zjk4ZGJkY2FkZjk4NDJl
YzE4MDI3NTM1ZWZiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uaApAQCAtNTUsNyArNTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
aXJ0dWFsIH5KU0FjdGl2YXRpb24oKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNT
Y29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDRiMGNhYTIyMTY4MmY2YzY4YTYwNWU4
YWY5ZTU0MDY2NThjMDMyY2EuLmM4MzY2MTVhMTBiZGM3ZGM4N2ViYmZmYjI3ZTM3YmE3OGY5ZjQ4
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC04NzEs
MTIgKzg3MSwxOCBAQCB2b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMs
IGludCBjb3VudCkKICAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgSlNBcnJh
eTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBcnJheTo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNBcnJheSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIHRoaXNPYmplY3QtPnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRv
cik7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZU51bWJlcnNGb3JRU29ydChjb25zdCB2b2lkKiBh
LCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmlu
ZGV4IDU2NjIyMjVlNTdjZDE5NzUzY2QyOTQ2ZTFiNjJmNTcyNmMwNmRiNDcuLmU4ZmU3ODk1MDI4
ZGY5MzcyOWEzMDM0NmYwMGRjY2Y1ZmY1OTllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKQEAgLTE3Miw3ICsxNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9p
ZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZv
aWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNmRmNWI5ODc5
MmZiNTE1OWUyZThiYmRhNWFkMzBlYzE4ZTI5Mzc3Yy4uOWVlNTIyZjBjZThlMmI2NWFmYzJlNTI5
ZmZhOTBjZTVhNDVjZWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
QEAgLTg0LDcgKzg0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgVVN0cmlu
ZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCog
dG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIC8v
IE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQu
CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CkBAIC0xNzYsOSAr
MTc3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0
KCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQorICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmbV9zdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
ICAgIH0KKworICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgSlNDZWxsKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3N0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUg
aW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDQwMjZjOTk2NzlmYjE1NWQ5OWMzZDMz
ZDAyNWFlYzVmMTVjNmIzNmQuLjVjZGNlNjJjMzU0YjE2ZDYyY2U0Y2RhYzIzYjJmNzYzMGZjYTcw
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBA
IC0xMzEsMTYgKzEzMSwyMiBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWRE
aXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5hbWUoZXhlYyk7CiB9CiAK
LXZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3Zv
aWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2
aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTRnVuY3Rpb246OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9z
Y29wZUNoYWluKTsKLSAgICBpZiAobV9leGVjdXRhYmxlKQotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmbV9leGVjdXRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29w
ZUNoYWluKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9leGVjdXRhYmxlKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKIH0KIAogQ2FsbFR5cGUgSlNG
dW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDY3YTBhYzkzMDM3YTY5MmZhNjY0Mjc2
ZGI5OGJmYTIyZTk3NzllYjkuLjk4MDZkZjI2NzkzYTQzMGUxNmRjNmM2MDI2NGFjZGMwMjI4NzVh
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE1
NCw3ICsxNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBK
U1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTdmNThlNGI3ZDVkNWNjZTgyMjNiZDE5
N2EwMmNlZWFhM2Y4N2JjMC4uYjJmNmU3MGJjMzgyMmQyYmM1Y2RlMGNhYjViOTc4OTE4YmRlMWUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtMzA2LDY1ICszMDYsNzEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90
b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAg
ICAgb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4tPnNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmpl
Y3RQcm90b3R5cGUpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7IAorICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLQotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZ2xvYmFs
U2NvcGVDaGFpbik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9tZXRob2RDYWxsRHVt
bXkpOwotCi0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBDb25zdHJ1Y3Rvcik7
Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9lcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7Ci0KLSAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX2V2YWxGdW5jdGlvbik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9jYWxsRnVuY3Rpb24pOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXBwbHlG
dW5jdGlvbik7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX29iamVjdFByb3RvdHlw
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9mdW5jdGlvblByb3RvdHlwZSk7Ci0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmbV9ib29sZWFuUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX3N0cmluZ1Byb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9udW1iZXJQcm90b3R5cGUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0
ZVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBQcm90b3R5
cGUpOwotCi0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwot
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwot
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0ZVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmbV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX2Vycm9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX2Z1bmN0aW9uU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJm1fbnVtYmVyT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9yZWdFeHBTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
c3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotCi0gICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgewor
ICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX2dsb2JhbFNjb3BlQ2hhaW4pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRo
aXNPYmplY3QtPm1fbWV0aG9kQ2FsbER1bW15KTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJnRoaXNPYmplY3QtPm1fcmVnRXhwQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAg
dmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yYW5nZUVycm9yQ29uc3RydWN0
b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVmZXJlbmNl
RXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0b3IpOworCisgICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOworICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworCisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90
b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYXJyYXlQ
cm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fYm9v
bGVhblByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+
bV9zdHJpbmdQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fbnVtYmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlz
T2JqZWN0LT5tX2RhdGVQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRo
aXNPYmplY3QtPm1fcmVnRXhwUHJvdG90eXBlKTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRv
ciwgJnRoaXNPYmplY3QtPm1fYXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3Rv
clN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9j
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0
aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0
cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9lcnJv
clN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9m
dW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX251bWJlck9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N0cmluZ09iamVj
dFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9p
bnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX3JlZ2lz
dGVyQXJyYXkpIHsKICAgICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBj
b2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLAogICAgICAgICAvLyB3ZSBjYW4g
bWFyayB0aGUgdG9ybi1vZmYgYXJyYXkuCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1f
cmVnaXN0ZXJBcnJheS5nZXQoKSwgbV9yZWdpc3RlckFycmF5U2l6ZSk7Ci0gICAgfSBlbHNlIGlm
IChtX3JlZ2lzdGVycykgeworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0
LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheVNpemUp
OworICAgIH0gZWxzZSBpZiAodGhpc09iamVjdC0+bV9yZWdpc3RlcnMpIHsKICAgICAgICAgLy8g
RHVyaW5nIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSBp
biB0aGUgcmVnaXN0ZXIgZmlsZSwKICAgICAgICAgLy8gdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1
cyBob3cgbWFueSB2YXJpYWJsZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0ZXJzCiAgICAgICAgIC8v
IHBvaW50cyB0byB3aGVyZSB0aGV5IGVuZCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhl
Y3V0aW9uIGJlZ2luLgotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVycyAt
IHN5bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJzIC0gdGhpc09iamVjdC0+
c3ltYm9sVGFibGUoKS5zaXplKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IGU4YTA3ZTcyZTJjNjYyZGU1Nzg3ZTRjNzY0NDI3YWViNDA1YzhlNzkuLmI5
YTY2ZGEzODg1OWEyOWM0NWEzMGRjMzA1YzIwNWQ1NmM0YTdmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTc0LDcgKzE3NCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxP
YmplY3QoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCA1MjM3MjFjZGJhMDZiNWUzZjQwZGQzNDNlNmM3MWU5Y2QzN2Q0
OTY2Li45YzgwMWI2YTRhMzYzNGQ0NzIxMzA4OTgyODU3OTdlZjI2ZDYyZTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02OCwxNSArNjgsMjEgQEAg
c3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICB9CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB3YXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFy
a1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0
aW9uID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7
CisgICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKIAogI2lmbmRl
ZiBOREVCVUcKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
ID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDA1MmIxOWUwMWQ1ZDE3Y2IwYjk5M2M0OTgyNGI0
NjAxODkzNWMyMjcuLmVjYmRjNjg0MjJkOWIyMDE4MTM4MDgyY2FkOGZiMzYzY2E0MTQ3MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzksOCArNzksOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7
CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNp
dG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogICAgICAgICAvLyBUaGUgaW5saW5lIHZpcnR1YWwgZGVzdHJ1Y3RvciBjYW5u
b3QgYmUgdGhlIGZpcnN0IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQKICAgICAgICAgLy8gaW4g
dGhlIGNsYXNzIGFzIGl0IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMg
YSB3ZWFrIHN5bWJvbApAQCAtODE2LDcgKzgxNyw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
IAogQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
KyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CiAKICAgICBQcm9wZXJ0
eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdl
U2l6ZSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
CmluZGV4IDRjN2E2ZWU5Njc0NThlOTE0YTQ3MzBmZGU2NGEzYWE1ZTQ1MTA5NTcuLmVhNDJkNzhm
MGFkMjNjOTViODEzNjZlODI5MGY1YTMwYzViMzA5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC05
MiwxMyArOTIsMTkgQEAgSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKLXZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplKTsKLSAgICBpZiAobV9jYWNoZWRQ
cm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBl
Q2hhaW4pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2pzU3RyaW5ncy5nZXQo
KSwgdGhpc09iamVjdC0+bV9qc1N0cmluZ3NTaXplKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9j
YWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAppbmRleCBhNzE5ZGUxY2I4ZjI3MTZhNzZhMjVlNWNhMGMyNDdlNzdhNzZhYmExLi5jNmY2
OTc5NzJjYTc1NDZiNTJhNjQ2YjM3MGM5ZDBmZjU3MWM4NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC01
OCw3ICs1OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhD
b21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCAmc19pbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIGludCYgb2Zmc2V0KQogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwCmluZGV4IDUyMDY1MTBkNmNkMmE3NzI0YTczYjViZWQxMmExZjJkNmQ4Y2M3
MTYuLjMxZGE4MGE3OWVjZDYwN2VlMTk5MjI3YjAyYWU3ZWQ0ZmQzZWIxODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3Bw
CkBAIC0zMiwxMyArMzIsMTkgQEAKIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIAotdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1N0YXRpY1Njb3Bl
T2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
U3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3Bl
T2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcp
OwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwotICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdpc3RlclN0b3JlKTsKIH0KIAog
SlNPYmplY3QqIEpTU3RhdGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRp
Y1Njb3BlT2JqZWN0LmgKaW5kZXggMWY4ZDhiOGZlZjNkOGJjM2MxZTJiNWIyMDAxNmIyYTU5ZjVj
NTI2ZS4uODIxMTc4YTlhZmI4NjNjMjZlN2ZmY2VhNmEyYTRlMDhjYjhlZWRhZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApA
QCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICAgICAgcmV0dXJuIHNjb3Bl
T2JqZWN0OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1
aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1Ro
aXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0
cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCA4ZDYzODdlYzBhYjIwYWRm
N2FmYTUzZTFmMTBmZGFkMDQzMGYwMWUyLi42OTE5MmZlM2NkNzgzZGYxNGUwNDQ1NDk5OTJkZDk1
ZGJmOWUwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3Jh
cHBlck9iamVjdC5jcHAKQEAgLTI2LDE0ICsyNiwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBwZXJPYmplY3QpOwogCi12b2lkIEpTV3JhcHBl
ck9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikgCit2b2lkIEpTV3Jh
cHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAog
ewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1dyYXBwZXJPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dyYXBwZXJPYmplY3Qq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1faW50ZXJu
YWxWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJuYWxWYWx1ZSk7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
cmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuaAppbmRleCBjZjQ0ZTA0ZTc4NWQyNGU0OWEwYjljNTU3MmQ1ZTE1YzJhN2I0OTM0Li45
NTk2YWE0ZTMyMGY5MjZlY2U3ZjFmYWI2ODQzZWQ0ZjlhMTFkMzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtNDUsNyArNDUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgCiAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTEw
M2MzNzYxMzYyYzI1M2I2Y2UyOGRhMWYyYzAyYTYxYWY2Y2RmNy4uZTU4MWRhOWY0NDljZjM5MjQz
OTg1MWE4MDZiZTE5OWM1NTU5NDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDE0ICszNywy
MCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cgogewogfQogCi12b2lkIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Cisg
ICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9lcnJvclN0cnVjdHVyZSkKLSAgICAgICAgdmlz
aXRvci5hcHBlbmQoJm1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIElu
dGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
aWYgKHRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IGNjNDYzNWI1MGUwODU2OWVlMGQ5NWNmMWE4
MDA1MmRmOTcwYWM1MDEuLjhjMjcyZWFhMmE4NjRjMDgwYTFkMjE0ZGNmM2ViNzZmOGJlMGEzYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKQEAgLTcwLDcgKzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVh
bCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAg
ICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggYmFlOTA4NjFlYTUz
NTkwNmI5ZWE1NjVhYzdhZDJjMzQ0YzFlNmM1Zi4uMTIzZGQ2ZTlhMTZmZjY5MmY2YjI3NDdiZDIw
ZmRiMmY3MjBkNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwCkBAIC03OCwxNiArNzgsMjIgQEAgUmVnRXhwT2JqZWN0Ojp+UmVnRXhwT2Jq
ZWN0KCkKIHsKIH0KIAotdm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lk
IFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJl
Z0V4cE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChk
LT5yZWdFeHApCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5yZWdFeHApOwotICAgIGlmIChV
TkxJS0VMWSghZC0+bGFzdEluZGV4LmdldCgpLmlzSW50MzIoKSkpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZkLT5sYXN0SW5kZXgpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPnJl
Z0V4cCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPnJlZ0V4cCk7Cisg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0LT5kLT5sYXN0SW5kZXguZ2V0KCkuaXNJbnQzMigp
KSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQtPmxhc3RJbmRleCk7CiB9
CiAKIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggYzlmYjAw
YmYwOTA4M2MyZTkxNTc4NGNhNzNlMjYxNWE0ZTUyZTczMC4uMTFlMDE5NWVhOTg1NjVjYTcxMTlk
MDdhNDE2M2YyM2UwMzM0ZGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmgKQEAgLTgyLDcgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9vbCBtYXRjaChFeGVjU3RhdGUqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAppbmRleCBkZjRkYTQx
YzAyMTM5NDI3MDY1NGMwNTFjNmY3YzhlNTI4ODVlYzY1Li4xM2I3OWQ5YjBkZjc5ZmMxMTU5ODg0
OTU2NDc5N2UwMmU4NDczM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZUNoYWluLmNwcApAQCAtNjcsMTYgKzY3LDIyIEBAIGludCBTY29wZUNoYWluTm9kZTo6bG9j
YWxEZXB0aCgpCiAgICAgcmV0dXJuIHNjb3BlRGVwdGg7CiB9CiAKLXZvaWQgU2NvcGVDaGFpbk5v
ZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFNjb3BlQ2hhaW5O
b2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTY29wZUNoYWlu
Tm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFNjb3BlQ2hhaW5Ob2RlKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIGlmIChu
ZXh0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbmV4dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
Jm9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbE9iamVjdCk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJmdsb2JhbFRoaXMpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5uZXh0KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bmV4dCk7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm9iamVjdCk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPmdsb2JhbFRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBkZDUwMDRiNTAwYTgyY2FjNGVl
YWYyYmJjNTc1Yjc4ZmQ4NDdkZjRhLi5hYzUyYzY3N2JiNTQxOTY3YjQwMDY5MDZjM2Y0Yzc1ZmVm
ZWE0ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBA
IC04Nyw3ICs4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIAogICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBl
SW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAzMTNh
ODUxODcxNGQ2YzVmYmEzNTdiOWUzOWVkM2VmNjJmYzk0YjZjLi40ZWRkZTlmNGJlYTllZmQ5MDU1
Y2YyMDYyMjVhOTE4MjMwYTBhYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKQEAgLTcyNCwyNiArNzI0LDMyIEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQ
cm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkm
IHByCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKLXsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2lu
Zm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAo
bV9nbG9iYWxPYmplY3QpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7
Ci0gICAgaWYgKG1fcHJvdG90eXBlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9wcm90b3R5
cGUpOwotICAgIGlmIChtX2NhY2hlZFByb3RvdHlwZUNoYWluKQotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9jYWNoZWRQcm90b3R5cGVDaGFpbik7Ci0gICAgaWYgKG1fcHJldmlvdXMpCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX3ByZXZpb3VzKTsKLSAgICBpZiAobV9zcGVjaWZpY1ZhbHVl
SW5QcmV2aW91cykKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3BlY2lmaWNWYWx1ZUluUHJl
dmlvdXMpOwotICAgIGlmIChtX2VudW1lcmF0aW9uQ2FjaGUpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZtX2VudW1lcmF0aW9uQ2FjaGUpOwotICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKLSAg
ICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQo
KTsKLSAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5
VGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Cit2b2lkIFN0cnVjdHVyZTo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTdHJ1Y3R1cmUqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvdG90eXBl
KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm90b3R5cGUpOworICAg
IGlmICh0aGlzT2JqZWN0LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbik7CisgICAgaWYgKHRo
aXNPYmplY3QtPm1fcHJldmlvdXMpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3ByZXZpb3VzKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2
aW91cykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3BlY2lmaWNWYWx1
ZUluUHJldmlvdXMpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpCisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VudW1lcmF0aW9uQ2FjaGUpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgUHJvcGVydHlU
YWJsZTo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsK
KyAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5t
X3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAg
ICBpZiAocHRyLT5zcGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZwdHItPnNwZWNpZmljVmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGQ2MDczN2U1ZGZiMjM4MDAwZjhlYTlkMWVjYzVkMDZl
ODgxZDc1NGQuLjk1OGFkMWI3NWI4ZmU1N2JiYjU2ZmRlOGJiODM4ZjVlYjJkZjY2NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xMzAsNyArMTMwLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBw
cm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCiAgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsg
QVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJl
dmlvdXMuZ2V0KCk7IH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9t
KFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCAzZTBmMDI4ZWI3MDdjN2UxMTcxMWU4
MGFlODRmOTI5ODgzOTA4YTE0Li4wZmIyOGRlNWZlN2E2YjQwZmJjZWM2NWU3NTQ4MzQxOWYwZmMz
NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwCkBAIC00MywxMyArNDMsMTkgQEAgU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFp
bigpCiB7CiB9CiAKLXZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9
CisKK3ZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTdHJ1Y3R1cmVDaGFpbiogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PFN0cnVjdHVyZUNoYWluKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKICAgICBzaXpl
X3QgaSA9IDA7Ci0gICAgd2hpbGUgKG1fdmVjdG9yW2ldKQotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmbV92ZWN0b3JbaSsrXSk7CisgICAgd2hpbGUgKHRoaXNPYmplY3QtPm1fdmVjdG9yW2ldKQor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV92ZWN0b3JbaSsrXSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgKaW5kZXggY2RkNjRlZjZhNjFhZTQxNDQwMzNiMDdmYzFlYzE5MjcwMzFh
ZGQwYi4uMTkwYzVjMmY0ZTQ0N2VjYzIwOTE4MmRhZWQ4NDVlNTBmMTlmOThmNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCkBAIC01Miw3ICs1
Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGNoYWluOwogICAgICAg
ICB9CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92
ZWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7
CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwg
JnNfaW5mbyk7IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhNzJjNWNl
ZDU5ZmIzZDhhZjNkMmMwYzFlODQwNGM4MTMxM2YyYzhiLi5lMzY2YzMyOTU3Y2U4YWFmYjYxMTBj
MWE0YjQ3NDY0ZGQwOWUxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxMS0wOS0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCB3ZSBqdXN0IGV4dHJhY3QgdGhlIGJvZGllcyBvZiB0aGUgdmlydHVhbCB2aXNpdENoaWxk
cmVuIG1ldGhvZHMKKyAgICAgICAgdGhyb3VnaG91dCB0aGUgSlNDZWxsIGluaGVyaXRhbmNlIGhp
ZXJhcmNoeSBvdXQgaW50byBzdGF0aWMgbWV0aG9kcywgd2hpY2ggYXJlIAorICAgICAgICBub3cg
Y2FsbGVkIGZyb20gdGhlIHZpcnR1YWwgbWV0aG9kcy4gIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRl
IHN0ZXAgaW4gdHJ5aW5nIHRvIAorICAgICAgICBtb3ZlIHRoZSB2aXJ0dWFsLW5lc3Mgb2Ygdmlz
aXRDaGlsZHJlbiBpbnRvIG91ciBvd24gY3VzdG9tIHZ0YWJsZSBzdG9yZWQgaW4gCisgICAgICAg
IENsYXNzSW5mby4gIFdlIG5lZWQgdG8gY29udmVydCB0aGUgbWV0aG9kcyB0byBzdGF0aWMgbWV0
aG9kcyBpbiBvcmRlciB0byBiZSAKKyAgICAgICAgYWJsZSB0byBtb3JlIGVhc2lseSBzdG9yZSBh
bmQgcmVmZXIgdG8gdGhlbSBpbiBvdXIgY3VzdG9tIHZ0YWJsZSBzaW5jZSBub3JtYWwgCisgICAg
ICAgIG1lbWJlciBtZXRob2RzIHN0b3JlIHNvbWUgaW1wbGljaXQgaW5mb3JtYXRpb24gaW4gdGhl
aXIgdHlwZXMsIG1ha2luZyBpdCAKKyAgICAgICAgaW1wb3NzaWJsZSB0byBzdG9yZSB0aGVtIGdl
bmVyaWNhbGx5IGluIENsYXNzSW5mby4KKworICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgor
ICAgICAgICAoVXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAo
VXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogVXNlck9iamVjdEltcC5o
OgorCiAyMDExLTA5LTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVjdG9ycyBp
biBKU0NlbGwgaGllcmFyY2h5ICg2LzcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdElt
cC5jcHAKaW5kZXggYWQzNjkzYjNhZDEzMDVlMGE5YzI0NmViNmM5OTgxMzM2MWUwZjRiZS4uNmMz
YTdkNDk1YWUxNDUxZTcxMGZmYTlhMGNhNzA0M2E3YzBhZjcyZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAtNDA0LDkgKzQwNCwxNSBAQCBVU3RyaW5nIFVzZXJP
YmplY3RJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit2b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OwotICAgIGlmIChmSlNVc2VyT2JqZWN0KQotICAgICAgICBmSlNVc2VyT2JqZWN0LT5NYXJrKCk7
CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBVc2VyT2JqZWN0
SW1wOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgVXNlck9iamVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFVzZXJPYmplY3RJ
bXAqPihjZWxsKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZkpTVXNlck9iamVjdCkKKyAgICAgICAgdGhpc09i
amVjdC0+ZkpTVXNlck9iamVjdC0+TWFyaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2Jq
ZWN0SW1wLmgKaW5kZXggNDNmZjBkYThkNzU2YWZlNmZmM2Q3Yzg2MzlhOWQzMTNhYWQwNWJiYi4u
YTg2YjUyY2IzNjNhOGQ3ZTAxNGU4ODEyYjM5N2ZhYzdkY2M1ODUyOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvVXNlck9iamVjdEltcC5oCkBAIC02Miw3ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNl
ck9iamVjdCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkyN2Y4MzY1MzhjMzQ2OTAwOWYwMjcz
MTljMDVkMzNhYjU0ZGVmMC4uODE5MzMzNGIwNGM0NDhjZjExMjQzY2VlNjUzYzQ4N2Q4YWU5Y2E4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMS0wOS0yMiAgTWFyayBIYWhuZW5i
ZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lv
biBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gg
d2UganVzdCBleHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBt
ZXRob2RzCisgICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJj
aHkgb3V0IGludG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxl
ZCBmcm9tIHRoZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVw
IGluIHRyeWluZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hp
bGRyZW4gaW50byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFz
c0luZm8uICBXZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMg
aW4gb3JkZXIgdG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJl
ZmVyIHRvIHRoZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBt
ZW1iZXIgbWV0aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5
cGVzLCBtYWtpbmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmlj
YWxseSBpbiBDbGFzc0luZm8uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRy
Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVh
bCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NT
U1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdl
UG9ydDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdl
UG9ydDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVN
YXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJD
b3JlOjpKU05vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwp
OgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
U3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
dHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVX
YWxrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNp
dENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE9iajo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmg6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5oOgorCiAyMDExLTA5LTIyICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgRGVmaW5lIGV4cG9ydCBzeW1ib2wgY29ycmVjdGx5IGR1ZSB0byByZW5h
bWUgb2YgcGFnZVNjYWxlRmFjdG9yIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGIwNjYwZDU1
NTlmM2Y4NDNkNjQxOGM1ZjNlYjE4N2U2YjA0Njc5NzIuLmM5YjdhMzQ2NjUyZWJmYjJmZDJhNjI4
ODgxZjMzODQxZmY1MDUwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04MTUsNyArODE1LDcg
QEAgX19aTjdXZWJDb3JlNkVkaXRvcjZpbmRlbnRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjdDb21t
YW5kQzFFdgogX19aTjdXZWJDb3JlNkVkaXRvcjdjb21tYW5kRVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlNkVkaXRvcjdvdXRkZW50RXYKLV9fWk43V2ViQ29yZTZKU05vZGUxM3Zpc2l0Q2hp
bGRyZW5FUk4zSlNDMTFTbG90VmlzaXRvckUKK19fWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFCiBfX1pON1dlYkNvcmU2SlNOb2RlM3B1
dEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8x
NVB1dFByb3BlcnR5U2xvdEUKIF9fWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRQogX19aTjdXZWJD
b3JlNlJlZ2lvbjV1bml0ZUVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0
ckN1c3RvbS5jcHAKaW5kZXggNDQ5YTVjZTEyNzc5ZmQ2ODYzMGUzNmUzMDVjMGNjMTg5MWZiYTcx
Zi4uM2IxMDg2ZDU3NGY5Njc3N2Q0Mjk0ZTAxOWRhMzE4ODY4ZmFjYWIyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCkBAIC0zOSwxNCArMzksMjAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi12b2lk
IEpTQXR0cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBdHRy
Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdHRyKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNBdHRyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBpbXBsKCktPm93bmVyRWxlbWVudCgpOwor
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPm93bmVyRWxlbWVudCgp
OwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KGVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCBjOGUxZWNlODFlZWQyMTRiZDQyZWNh
YzVkNDBkMzlkZGJhZWYzNDg3Li40ZTZhNDZkMzE1Njc0N2Y2OTcxMmM0YzJmYjUzYTI5YzFhM2Jl
NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRl
eHRDdXN0b20uY3BwCkBAIC0zOSwxMyArMzksMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIEpTQXVkaW9Db250ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb0NvbnRleHQqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU0F1ZGlvQ29udGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOwotICAgIG1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgdGhpc09iamVjdC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnRleHRDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNBdWRpb0NvbnRleHQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggMTU1YmE2
ZTNjYzUxNWQ0ZWQ5NWVhMTlmYjQ0MjkzNGRlMDIyNWMwNS4uNzFiMDZjZTFkMjk2Nzg1ODhjNzA2
MTVkYjJlMWYwZWY1ZDliNmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NSdWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1J1bGVDdXN0b20uY3BwCkBAIC00OCwxMyArNDgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9
CisKK3ZvaWQgSlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNDU1NSdWxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNDU1NSdWxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0Zs
YWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSog
cnVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IDQ2NWU3ODM0YTVkNjBlYzYyYTBmYTRhOGQ4
ZWNlNDQyYmZhZDJlMTQuLmNkOWFjZWU4ZDE4NGYyMDNmOWZiODI3ZmUyYmUwMDI4ZTU2NTYxY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtNDMsMTMgKzQzLDE5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRp
b246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIC8vIENoZWNr
IGZvciBhIENTUyBwcmVmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBhZDY0NmEw
NTMyODI3MjViYTA5MmM1ODIzMjE2ZjdmMDVkOWZjNDYxLi5kYTYwMjhjMDg2NjYzNTVlMjQyMjA2
YzI2MTg2YjI5MzA2ODk2NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDE0
ICszOSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVj
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLT5jYW52YXMoKSkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKS0+Y2FudmFzKCkpKTsKIH0KIAogSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3MWQ5OGM5
MWE1N2Q3YjYxMzMxN2RhNmE3YjQ4MTI1NDcwNTE0MjBjLi41Mjg2N2QzMGE4Njc5MDE5Y2MxOGIz
OGI0ODUyZDZhYmUyNjU4YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC01NSwyMyArNTUsMjkgQEAgdm9pZCBKU0RPTUdsb2Jh
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVj
dCogdGhpc1YKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lkIEpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBK
U0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01HbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKIAotICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCku
ZW5kKCk7Ci0gICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1
cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIEpTRE9NU3RydWN0dXJlTWFwOjpp
dGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuZW5kKCk7CisgICAgZm9yIChK
U0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnNl
Y29uZCk7CiAKLSAgICBKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3Ry
dWN0b3JzKCkuZW5kKCk7Ci0gICAgZm9yIChKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBp
dDIgPSBjb25zdHJ1Y3RvcnMoKS5iZWdpbigpOyBpdDIgIT0gZW5kMjsgKytpdDIpCisgICAgSlNE
T01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9y
cygpLmVuZCgpOworICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0g
dGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQyLT5zZWNvbmQpOwogCi0gICAgaWYgKG1faW5qZWN0
ZWRTY3JpcHQpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCkKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faW5qZWN0ZWRTY3JpcHQpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFs
T2JqZWN0OjpzZXRDdXJyZW50RXZlbnQoRXZlbnQqIGN1cnJlbnRFdmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDkwMDI4MzA4MzRl
MGYzMGIxYmUwZDQyZjgxNmI5MmU5MzEyNTk0YzAuLjk5YTYzMWZjOTM2OThhNzliMmNiNzBjMTQ0
ZWEyZTE3ZWU2YTA5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtNjQsNyArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHQoSlNPYmplY3QqKTsKICAgICAgICAgSlNPYmplY3Qq
IGluamVjdGVkU2NyaXB0KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDOjpTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAgICAgICAgIERP
TVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA0
NzdjNmJjZjllOWYxY2E2YjE2OWEwNGJkNzEzNDdmMzkyOWEyYjkzLi4wNjczYWQ5YWE5N2MzZmQ1
NDQ1NzQ0OGNkZmQxNWY5MjM3OTBlNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC03NywxNSArNzcsMjEgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTRE9NV2luZG93Ojp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0RPTVdpbmRvdzo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNET01XaW5kb3cqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgpKQorICAgIHRoaXNP
YmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIGlmIChG
cmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpCiAgICAgICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChmcmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMTU4OGQ0ZmVkMDIxZWU2Y2M2NmZmNTM5
YjhmMDA0NmEzZWJkOTRhNy4uZTEwNjY4OGNiZGRkMGE1NGZlYzEzYjY3Njk1MTk5OTI2MTRiYzA3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAKQEAgLTgzLDE0ICs4MywyMCBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQ
YXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQogLy8gSlNPYmplY3QgbWV0aG9kcwogLy8g
LS0tLQogCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit2b2lkIEpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQor
Cit2b2lkIEpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOwotICAgIGlmIChtX3dpbmRvdykKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fd2lu
ZG93KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3dpbmRvdykKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2luZG93KTsKIH0KIAogVVN0cmluZyBKU0RPTVdp
bmRvd1NoZWxsOjpjbGFzc05hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IGZlOGE0ZmRlMDkxNjIzMWZkMzdkNjNmY2ExNDhk
Mzg3YmNkZTM4ODUuLmU5YWJjMTU4MTJjZjQ2N2EwZjI4MjZmNmEzMDU4Yzk4ZTkzZjA2NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTc3
LDcgKzc3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90KTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RW
aXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6
OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpK
U0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpVU3RyaW5n
IGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCmlu
ZGV4IGViYzIzYjM2Y2QzZTQ3NTQ2MzdlNDIzZTdiNmNlNmEwMjQ5NzEwM2YuLjAwNGQ4YmU5ZGI1
Mjk3YTM4YmNhMGQ2MTM4MGRjZjI0ZjE1N2YzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcApAQCAt
MzQsMTMgKzM0LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit2b2lkIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRp
b05vZGUqPihpbXBsKCkpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICBzdGF0aWNfY2FzdDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4odGhpc09iamVjdC0+aW1wbCgp
KS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwCmluZGV4IDM0ZjU5MzEzMzVmZDdhOGJlNzMzMmFmNGJjOTRjYzc2OWFk
MDJjY2QuLmZhMTljOWQyMmMwYTZlZDliZmQ3YjNkNmM0N2NkMjRhZjI2ODJjMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20u
Y3BwCkBAIC0zMiwxOCArMzIsMjQgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKLXZvaWQgSlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKKwordm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRo
aXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIEpTTWVzc2FnZUNoYW5uZWwqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU01lc3NhZ2VDaGFubmVsKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FT
U0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1f
aW1wbC0+cG9ydDEoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5t
X2ltcGwtPnBvcnQxKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAot
ICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1faW1wbC0+cG9ydDIoKSkKKyAgICBpZiAoTWVz
c2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPnBvcnQyKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCA4YWRmNGE3YmIzOGVkYTBl
NDZiNDA0NDRmNGFkMzhmYjVjYmYxYTEyLi45ZWVkNzM5MDFjZjdhNzhiYTM3YzA2NGIyMDEwMTUw
MDUzYzNhYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcApAQCAtNDIsMTggKzQyLDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNNZXNzYWdlUG9ydDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTWVzc2FnZVBvcnQqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU01lc3NhZ2VQb3J0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBw
b3J0LCB3ZSBjYW4gZGlyZWN0bHkgbWFyayBpdCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJl
IHJlbW90ZWx5IGVudGFuZ2xlZCBhcmUgbWFya2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0
c0ZvckNvbnRleHQoKS4KLSAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBtX2ltcGwtPmxvY2Fs
bHlFbnRhbmdsZWRQb3J0KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09iamVj
dC0+bV9pbXBsLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3QocG9ydCk7CiAKLSAgICBtX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTsKIH0KIAogSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4IDQ3ZjU2YTI5ZWY0NGFjYzAxMGY1NzQ5Mjg3MWM2
YTBjYWVkNzA4OGQuLmExMGQ1MmExOWE3YjM4YjEzNDA2OTRmMjQ1M2ZhZTg0MmQ4ODQ4ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHAKQEAgLTM1LDYgKzM1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAordm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwogYm9vbCBKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0
ZSosIE5hbWVkTm9kZU1hcCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQog
ewogICAgIHJldHVybiBpbXBsLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwpAQCAtNDYsMTggKzUxLDE5IEBAIEpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVuCiAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmlt
cGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9
CiAKLXZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKKyAgICBKU05hbWVkTm9kZU1hcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTTmFtZWROb2RlTWFwKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKIAogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCB0aGUgd3JhcHBlciBmb3Igb3VyIHVuZGVybHlp
bmcgTmFtZWROb2RlTWFwJ3MgZWxlbWVudAogICAgIC8vIGFsaXZlIGJlY2F1c2UgTmFtZWROb2Rl
TWFwIGFuZCBBdHRyIHJlbHkgb24gdGhlIGVsZW1lbnQgZm9yIGRhdGEsIGFuZAogICAgIC8vIGRv
bid0IGtub3cgaG93IHRvIGtlZXAgaXQgYWxpdmUgY29ycmVjdGx5LgogICAgIC8vIEZJWE1FOiBG
aXggdGhpcyBsaWZldGltZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCi0gICAg
RWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+ZWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA1MWUz
YmI4NmFhZWUzMmI1ZjIxNjU5YmUxMzdjODJhNDQzMmZkZjExLi45NzE1MjY2NTBhYzRiYmIwNDUx
NDUxZmIyNjRlNDQ0ZmI1MWM0NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKQEAgLTE5MiwxNCArMTkyLDIwIEBAIFNjb3BlQ2hhaW5Ob2RlKiBKU05v
ZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSogbm9k
ZSkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotdm9pZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lk
IEpTTm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVu
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQo
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBOb2RlKiBub2RlID0g
bV9pbXBsLmdldCgpOworICAgIE5vZGUqIG5vZGUgPSB0aGlzT2JqZWN0LT5tX2ltcGwuZ2V0KCk7
CiAgICAgbm9kZS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogCiAgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3Qobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggYzE1MWM1NGM0YTAyYTk0ZjViMjJk
NDNhYTY2YTJlNDE4ZmUzMjE0MS4uNTYwODFlYzEzNTY5NWNiMGIwODIxYzI2Y2NmNTJiN2NhNjZj
Yjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
dXN0b20uY3BwCkBAIC0zNiwxMyArMzYsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuVmlydHVh
bChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisK
K3ZvaWQgSlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2RlRmlsdGVyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNOb2RlRmlsdGVyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3QodGhpc09iamVjdC0+aW1wbCgpKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlRmlsdGVy
PiB0b05vZGVGaWx0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwCmluZGV4IDAyZDEwOGQyNGY1ZGZhYWUwOTNhMWRlY2NhNWIyNzZjNzEzODhiMGEuLjcwNTU5
NDYyYTU3ODg1ZDk2NmIwOTVjYTVmMTM1NWViMDAyODAyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI5LDE0ICsy
OSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlSXRlcmF0
b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU05vZGVJdGVyYXRvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTm9kZUl0ZXJh
dG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlm
IChOb2RlRmlsdGVyKiBmaWx0ZXIgPSBtX2ltcGwtPmZpbHRlcigpKQorICAgIGlmIChOb2RlRmls
dGVyKiBmaWx0ZXIgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPmZpbHRlcigpKQogICAgICAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwCmluZGV4IGRk
MjBmYmEwYjc4M2QwMTNmNDI0YjU3NTJlNWNhN2U4OTAxMTdhMzQuLjg3ZTZiZjYzOWQ5MGU0M2Q3
NDkzNDIyM2FjYmE4ZjAyMDdhMTlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAKQEAgLTM1LDEzICsz
NSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTVkdFbGVtZW50SW5zdGFu
Y2U6OnZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTVkdF
bGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU1ZHRWxlbWVu
dEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTU1ZHRWxlbWVudEluc3RhbmNlKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNTVkdFbGVtZW50SW5zdGFuY2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+
Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAppbmRleCAzZTM3OTY5MzdjZGVhOGZlNWQ0
YzZhYjA3ZjI0ZGYyZWE5ZWVmNGRjLi45ZjM5YTE0ZTc1YzNjNTRkNTEwYTEzM2M3ZjcwYWIyNjhh
NzQwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdv
cmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRX
b3JrZXJDdXN0b20uY3BwCkBAIC00MywxNCArNDMsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0
b3IpOworfQorCit2b2lkIEpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTaGFyZWRXb3JrZXIqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU1NoYXJlZFdvcmtlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkt
PnBvcnQoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkt
PnBvcnQoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRl
eCAyMWUwMGIxNjhjMjI1NDExODExNGQyYTQ5MWUxZTRlMjA1MTFjNmU2Li4yZDcyNmFiYjE3Zjhm
NGYzNzQ4M2E1YTQwMjNhZTNhMGM2NDgwY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwxOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTdHlsZVNo
ZWV0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1N0eWxlU2hl
ZXQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1N0eWxlU2hlZXQq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1N0eWxlU2hlZXQqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkp
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmlt
cGwoKSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKaW5kZXggZGZmMzQ2
OWNlMjk4MDc0NmE1MjMxZTVkMTM2Mzk3NDUwYmZjMjY1Yy4uOTVlZGMwNWE1YTgxNjY3Y2M2YTFm
MDJlYjhhMzc5YTcxMmQxMTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCkBAIC0yOCwxNSArMjgsMjEgQEAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXZvaWQgSlNUcmVlV2Fsa2Vy
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorCit2b2lkIEpTVHJlZVdhbGtl
cjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIEpTVHJlZVdhbGtlciog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVHJlZVdhbGtlcio+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9B
U1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0g
bV9pbXBsLT5maWx0ZXIoKSkKKyAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gdGhpc09iamVj
dC0+bV9pbXBsLT5maWx0ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRl
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA1OWI2MzkyMDJlZGUyNjJhYTQx
M2U4NmZiMDA5OTQ3NDk5MmM2MWZlLi4yNDU2YjdkNzE3ZjZiOGRkODEwYzc1NWFiZjhlOWNjZDg0
N2JmZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0xOTIsMTMgKzE5MiwxOSBAQCBz
dGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgV2ViR0xFeHRlbgogICAgIHJldHVybiBqc051bGwoKTsKIH0KIAotdm9pZCBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKK3ZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
cywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9p
ZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgp
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkp
OwogfQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRl
cnMoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggODg3YTNiYzA0NWU5YmQ3MWI3ZDRmMmI2
ZjE5OWMzMWQ2N2VkNzA2Yi4uZjkwMDQ5NjBiNDVkZjRiMWJmNWJmYjAyOTYzODgzYzcxYjNiNDA1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRDdXN0b20uY3BwCkBAIC01MywxOSArNTMsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNXb3JrZXJDb250ZXh0KiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24g
PSBpbXBsKCktPm9wdGlvbmFsTG9jYXRpb24oKSkKKyAgICBpZiAoV29ya2VyTG9jYXRpb24qIGxv
Y2F0aW9uID0gdGhpc09iamVjdC0+aW1wbCgpLT5vcHRpb25hbExvY2F0aW9uKCkpCiAgICAgICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5hdmlnYXRv
ciogbmF2aWdhdG9yID0gaW1wbCgpLT5vcHRpb25hbE5hdmlnYXRvcigpKQorICAgIGlmIChXb3Jr
ZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IHRoaXNPYmplY3QtPmltcGwoKS0+b3B0aW9uYWxOYXZp
Z2F0b3IoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG5hdmlnYXRvcik7CiAKLSAg
ICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0
LT5pbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogYm9vbCBKU1dv
cmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCmluZGV4IDI1NzU3NTY2NjZkZmU2MGU3YTNkMjRkYTdhMDkxZWEwMzNiOTFiZDIuLjYwOTEz
ODM2MTY4NWE1OWI1NTEwYWE1NWQxNDFhMmIyNDk1MmE5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC01NCwy
OCArNTQsMzQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNf
aW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hN
TEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNYTUxIdHRwUmVxdWVzdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTWE1MSHR0cFJlcXVlc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAg
ICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwogCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSBtX2ltcGwtPm9w
dGlvbmFsVXBsb2FkKCkpCisgICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB0
aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkpCiAgICAgICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdCh1cGxvYWQpOwogCi0gICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3VtZW50
ID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiByZXNw
b25zZURvY3VtZW50ID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkp
CiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZURvY3VtZW50KTsKIAotICAg
IGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IG1faW1wbC0+b3B0aW9uYWxS
ZXNwb25zZUFycmF5QnVmZmVyKCkpCisgICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5
QnVmZmVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIo
KSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwog
CiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQotICAgIGlmIChCbG9iKiByZXNwb25zZUJs
b2IgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VCbG9iKCkpCisgICAgaWYgKEJsb2IqIHJlc3Bv
bnNlQmxvYiA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiAjZW5kaWYKIAotICAg
IG1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1faW1wbC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiAvLyBDdXN0b20g
ZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRo
UmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1
bHRDdXN0b20uY3BwCmluZGV4IDM1NDg5ZGM0N2E4ZTAxNGVmMjQyNjIzNjQxY2ExZWE3YWE0NzQy
ZjQuLjA5OTQyZjVlZWQwNGZkM2IxY2ZmZDEzNWQyYjE4Mjc5YTFhNzA2YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0z
NywxNCArMzcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5m
byk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1hQYXRo
UmVzdWx0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNYUGF0aFJlc3VsdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTWFBhdGhS
ZXN1bHQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAg
Y29uc3QgWFBhdGg6OlZhbHVlJiB4cGF0aFZhbHVlID0gaW1wbCgpLT52YWx1ZSgpOworICAgIGNv
bnN0IFhQYXRoOjpWYWx1ZSYgeHBhdGhWYWx1ZSA9IHRoaXNPYmplY3QtPmltcGwoKS0+dmFsdWUo
KTsKICAgICBpZiAoeHBhdGhWYWx1ZS5pc05vZGVTZXQoKSkgewogICAgICAgICBjb25zdCBYUGF0
aDo6Tm9kZVNldCYgbm9kZXNUb01hcmsgPSB4cGF0aFZhbHVlLnRvTm9kZVNldCgpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVzVG9NYXJrLnNpemUoKTsgKytpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IDA5NTI4ZDU2YmM1OTk1OTY3ZGIxYTQ3NjFkMDViOGFhYjdlZmZlOWIuLjUyMDNmZGYwYzQw
NzE4ODZiZWNiZDQ2MThjMTFhNmJjOGU5ZDNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC04NzcsNyArODc3LDggQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIHZpc2l0IGZ1bmN0aW9uCiAgICAgaWYgKCRuZWVk
c01hcmtDaGlsZHJlbikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTtcblxuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0
dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRv
ciYpO1xuXG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4ifSA9IDE7CiAgICAgfQogCkBAIC0yMjAwLDIxICsyMjAxLDI3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgkbmVl
ZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bU1hcmtGdW5jdGlvbiJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQg
JHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8JHtjbGFzc05h
bWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZs
YWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhv
dXRTZXR0aW5nRmxhZyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0pIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsKCktPnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJG51bUNhY2hlZEF0
dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmF0
dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAobV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lIC4gIilcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKHRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAu
ICIpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZmM2ODNhNWRmOTQ1N2YxMTI2YjI5
ODdkOWZkMTYwNWY3MGEzMTFmMy4uMTE5YjQ5ZTA0MDY5MmExZDhlMzkwY2RmMTBlMzA4NmRjYjdh
N2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4NzAsMTYgKzE4NzAsMjIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9w
dGlvbmFsKEUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXZvaWQg
SlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1Rl
c3RPYmo6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Rlc3RPYmoqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKLSAgICBpZiAobV9jYWNoZWRBdHRyaWJ1dGUxKQotICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9jYWNoZWRBdHRyaWJ1dGUxKTsKLSAgICBpZiAobV9jYWNoZWRBdHRyaWJ1dGUy
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRBdHRyaWJ1dGUyKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTEpCisgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTEpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTIpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTIpOwogfQogCiAvLyBDb25zdGFudCBnZXR0ZXJzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
aW5kZXggOGQ1MzQxMmU4Njc2Mzk2YzRlMTYyMTUzZTEyYzdkM2I4ZTc0ZGQxZi4uZjI5ZGM4ZDU5
MjEzOGYwM2EyODlhZGExNjFkNWFlODkwNzdmM2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtNTMsNyArNTMsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBKU0M6OldyaXRlQmFycmllcjxK
U0M6OlVua25vd24+IG1fY2FjaGVkQXR0cmlidXRlMTsKICAgICBKU0M6OldyaXRlQmFycmllcjxK
U0M6OlVua25vd24+IG1fY2FjaGVkQXR0cmlidXRlMjsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogCiAgICAgLy8gQ3VzdG9tIGF0dHJp
YnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IDRiYmU2
NWUwMTEzZGJmYzk4NGQ3YTU0NjQ0N2RkZTY1YzA5OTI2YWEuLjI3YmYxYzE1ZTk1NDhlMTMzNTc2
ODIxN2NmYjY1OGM0Mjc2MDVhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3Rh
bmNlLmNwcApAQCAtNjIsMTAgKzYyLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVh
bChTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgICAgIFF0SW5zdGFuY2UqIGluc3RhbmNlID0gc3Rh
dGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAgICAgIHZp
c2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAg
ICAgICAgUXRSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1l
T2JqZWN0Kj4oY2VsbCk7CisgICAgICAgIFJ1bnRpbWVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgICAgIFF0SW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGlj
X2Nhc3Q8UXRJbnN0YW5jZSo+KHRoaXNPYmplY3QtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAg
ICAgICAgIGlmIChpbnN0YW5jZSkKICAgICAgICAgICAgIGluc3RhbmNlLT52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAK
aW5kZXggNzNkZDJiZjU2MmVlZjEyZjIyMWM2NjMyNjA4OTc5ODMzNjgyOGJmMC4uOTVlYThkOTM0
N2Y1MjQ2MjVkZjRlNjkyNTVmM2Y5NGQ1ZjRkNTkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcApAQCAtMTQzOSwxMCArMTQzOSwxNiBAQCB2b2lkIFF0UnVudGltZU1l
dGFNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgaWRlbgogICAgIGQtPm1fYWxsb3dQcml2YXRlID0gYWxsb3dQcml2YXRlOwogfQogCi12b2lk
IFF0UnVudGltZU1ldGFNZXRob2Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIFF0UnVudGltZU1ldGhvZDo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKLSAgICBRV19EKFF0UnVudGltZU1ldGFNZXRob2QpOworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFF0UnVudGlt
ZU1ldGFNZXRob2QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9k
Kj4oY2VsbCk7CisgICAgUXRSdW50aW1lTWV0aG9kOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIFF0UnVudGltZU1ldGFNZXRob2REYXRhKiBkID0gdGhpc09iamVjdC0+
ZF9mdW5jKCk7CiAgICAgaWYgKGQtPm1fY29ubmVjdCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmQtPm1fY29ubmVjdCk7CiAgICAgaWYgKGQtPm1fZGlzY29ubmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfcnVudGltZS5oCmluZGV4IDkwNmQxMDhlMWU3NjliMjU3NmFiZTNkZDEwNmQ3NDM1
YjhiZjI4NzAuLmRlMjEzYzIwOTgxMjMxZGFhZmY2ZjZjYmVmNzFjOTM1ZDVhN2IwZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAtMTY4LDcgKzE2OCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHJvdGVjdGVkOgogICAgIFF0
UnVudGltZU1ldGFNZXRob2REYXRhKiBkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZERhdGEqPihkX3B0cik7fQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBmZjdiNmQ3ZmI1NDUzZmM3NTNhNjEyYzIxNGMwY2Yy
OThiYjczZjZmLi44YWMwZWY3MGNhZWFjMmMyMGE4YWUxZDdlMDg3YjYyZDI1ZWI4MGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKiB3b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4g
bV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKLSAgICAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2VyQ29udGV4
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpIGluCisgICAgICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJikgaW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcC4KICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOyB9CiAgICAgICAgIFdvcmtlckxvY2F0
aW9uKiBvcHRpb25hbExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNTNkYjBmYmEyNWNmZTZlOTQyYmUwOTRhODE3
MGE4NzA5OGQzY2M2YS4uYWZjN2JjZTY5NDk2YWRlMzdmMGYzMGY5ZWFmNWJlMTBmOGQwY2Q3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC01Niw3ICs1Niw3IEBAIF9aTjdXZWJDb3JlMjBT
aGFkb3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7CiBfWk43V2ViQ29yZTIx
Z2V0Q2FjaGVkRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xh
c3NJbmZvRTsKIF9aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVu
dEVqOwogX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQ
TlNfNE5vZGVFOwotX1pON1dlYkNvcmU2SlNOb2RlMTN2aXNpdENoaWxkcmVuRVJOM0pTQzExU2xv
dFZpc2l0b3JFOworX1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNK
U0MxMVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTNwdXRFUE4zSlNDOUV4ZWNTdGF0
ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RF
OwogX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0U7CiBfWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3
SlNWYWx1ZUU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108445</attachid>
            <date>2011-09-22 23:53:12 -0700</date>
            <delta_ts>2011-09-23 09:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68404-20110922235312.patch</filename>
            <type>text/plain</type>
            <size>121147</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NjUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzNjhiZjQ5ZTkwNjY3YzQ1OTA2MWEzMjE3NmJhYmYyZjNkM2U1NDQyLi4wZDJj
N2E1YjcxNDUzNmRmMzRjMmNiMGY3ODJkNDA0OWVjNTY5ZjQ1IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjIgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3RhdGljIHZl
cnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0IHRoZSBi
b2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAgIHRocm91
Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3RhdGljIG1l
dGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0dWFsIG1l
dGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAKKyAgICAg
ICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIgb3duIGN1
c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVkIHRvIGNv
bnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUgCisgICAg
ICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4gb3VyIGN1
c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBzdG9yZSBz
b21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQgCisgICAg
ICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0luZm8uCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA5LTIx
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIENy
YXNoIGluIFJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzIHdoZW4gR3JhcGhpY3NDb250ZXh0J3Mg
cGFpbnRpbmcgaXMgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZkODEwNTk2
My4uMWRlZmI0ZTVlNTZlMWY1Y2Q1NTM4OTdmYTRiYjU4NTUzNTllNTA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5NiwxMyArMTk2LDE5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
Q29uc3RydWN0RGF0YSYpOwogICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoKHN0YXRp
Y19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c19pbmZv
KTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAgICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlzT2JqZWN0KSksICZKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQYXJlbnQ6OnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgICAgIFBhcmVudDo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5QYXJlbnQ6OnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAg
IFBhcmVudDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdGhp
c09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAg
ICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNzY5MWNiMzdhMGYwMmNiNDFlZDc4NzFlNjFiNWFkOWU0ZGU3ODllNy4uZDMyZjk0ZGIx
MzFiMWY2YTI1NDVhZDYwNzhkMDc5ZjVhMjc5NTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA4IEBACisyMDExLTA5LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6
dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0
dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwg
aW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUg
CisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBh
biBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1
YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3Jl
ZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2Rz
IHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUg
ZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNl
IG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZv
cm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRv
IHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZvLgorCisgICAgICAgICogQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXZhbEV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjp2aXNp
dENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5EaXJlY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpK
U1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFw
cGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlblZp
cnR1YWwpOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVj
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9TY29wZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKwogMjAxMS0wOS0yMiAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgRnVuY3Rp
b24ucHJvdG90eXBlLmJpbmQubGVuZ3RoIHNob3VkbCBiZSAxLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggZjllZjUyNzUyMzJjZTA4YTg2YmI0ZWRjZmU4YjQz
MTc0OTM5Yjc5OC4uMDRjNTNmYjBhNWY3MWIyMWFkYjNjYWMwNGY5YTYzMzA5ZTdjNWRmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNjIsMTAgKzE2Miwx
MSBAQCBfX1pOM0pTQzEzU3RhdGVtZW50Tm9kZTZzZXRMb2NFaWkKIF9fWk4zSlNDMTRKU0dsb2Jh
bE9iamVjdDEwZ2xvYmFsRXhlY0V2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZUdl
dHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKIF9f
Wk4zSlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVBOU184SlNPYmplY3RFagotX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2
aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9yRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0
MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0MTZhZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9iYWxQcm9wZXJ0eUlu
Zm9FaQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyMHZpc2l0
Q2hpbGRyZW5WaXJ0dWFsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2Jq
ZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0
M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQ
dXRQcm9wZXJ0eVNsb3RFICAKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNP
YmplY3RFCkBAIC0xNzksNyArMTgwLDYgQEAgX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyMTBkaWRU
aW1lT3V0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJlc2V0RXYK
IF9fWk4zSlNDMTRWVGFibGVTcGVjdHJ1bTVjb3VudEVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTR0
aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDMTVKU1dyYXBwZXJPYmplY3Qx
M3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93
bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVF
UHZSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3duZXI4ZmluYWxpemVF
TlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyRDJF
dgpAQCAtMjc1LDExICsyNzUsMTEgQEAgX19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzZSZWdFeHA1bWF0Y2hFUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdF
aVBOM1dURjZWZWN0b3JJaUxtMzJFRUUKIF9fWk4zSlNDNlJlZ0V4cDZjcmVhdGVFUk5TXzEySlNH
bG9iYWxEYXRhRVJLTlNfN1VTdHJpbmdFTlNfMTFSZWdFeHBGbGFnc0UKIF9fWk4zSlNDNlJlZ0V4
cEQxRXYKLV9fWk4zSlNDN0pTQXJyYXkxM3Zpc2l0Q2hpbGRyZW5FUk5TXzExU2xvdFZpc2l0b3JF
CiBfX1pOM0pTQzdKU0FycmF5MTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFCiBf
X1pOM0pTQzdKU0FycmF5MTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183
QXJnTGlzdEUKIF9fWk4zSlNDN0pTQXJyYXkxNXNldFN1YmNsYXNzRGF0YUVQdgogX19aTjNKU0M3
SlNBcnJheTE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0
eVNsb3RFCitfX1pOM0pTQzdKU0FycmF5MjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTlNfMTFTbG90
VmlzaXRvckUKIF9fWk4zSlNDN0pTQXJyYXk2c19pbmZvRQogX19aTjNKU0M3SlNBcnJheTlzZXRM
ZW5ndGhFagogX19aTjNKU0M3SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVj
dHVyZUUKQEAgLTMwOCw3ICszMDgsNyBAQCBfX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lR2V0dGVy
RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBTMF9qCiBfX1pOM0pTQzhKU09iamVj
dDEyZGVmaW5lU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBTMF9qCiBf
X1pOM0pTQzhKU09iamVjdDEybG9va3VwR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckUKLV9fWk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18x
MVNsb3RWaXNpdG9yRQorX19aTjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0Nl
bGxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlF
UE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVs
ZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFagogX19aTjNKU0M4SlNPYmplY3QxNXVud3JhcHBl
ZE9iamVjdEV2CkBAIC0zMjQsNiArMzI0LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxN3B1dFdpdGhB
dHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRWpOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzhKU09iamVj
dDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzhKU09iamVjdDE4Z2V0UHJpbWl0aXZlTnVtYmVyRVBOU185RXhlY1N0YXRlRVJk
Uk5TXzdKU1ZhbHVlRQogX19aTjNKU0M4SlNPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5T
XzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVF
CitfX1pOM0pTQzhKU09iamVjdDIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk5TXzExU2xvdFZpc2l0
b3JFCiBfX1pOM0pTQzhKU09iamVjdDIxZ2V0UHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlND
OEpTT2JqZWN0MjJmaWxsR2V0dGVyUHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQTlNf
MTZXcml0ZUJhcnJpZXJCYXNlSU5TXzdVbmtub3duRUVFCiBfX1pOM0pTQzhKU09iamVjdDIzYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2VFUk5TXzEySlNHbG9iYWxEYXRhRW1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IGQ1MWYyYjA4
YjViNTFlZWJhMWZkYTBjZDJiNGZjZmI3Nzg3NmI2OGQuLmIxZmUzNTIzZjkxMjZkOTM3YjQyZGQw
NzBjMDUzMjE1ZjJkNzEzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0zNzYsMTEgKzM3NiwxMiBAQCBFWFBPUlRTCiAgICAg
P3Vud3JhcHBlZE9iamVjdEBKU09iamVjdEBKU0NAQFVBRVBBVjEyQFhaCiAgICAgP3V0ZjhAVVN0
cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBfTkBaCiAgICAgP3ZhbGlkYXRlVmFsdWVATWFy
a1N0YWNrQEpTQ0BAS0FYVkpTVmFsdWVAMkBAWgotICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFs
T2JqZWN0QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBK
U09iamVjdEBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5A
SlNXcmFwcGVyT2JqZWN0QEpTQ0BARUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKLSAgICA/dmlzaXRD
aGlsZHJlbkBTY29wZUNoYWluTm9kZUBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCiAgICAg
P3Z0YWJsZUFuY2hvckBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BARUFFWFhaCisgICAgP3Zpc2l0Q2hp
bGRyZW5ASlNHbG9iYWxPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAy
QEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5ASlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZT
bG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5WaXJ0dWFsQEpTR2xvYmFsT2JqZWN0
QEpTQ0BAVUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJlblZpcnR1YWxA
SlNPYmplY3RASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgorICAgID92aXNpdENoaWxkcmVu
VmlydHVhbEBTY29wZUNoYWluTm9kZUBKU0NAQFVBRVhBQVZTbG90VmlzaXRvckAyQEBaCiAgICAg
P3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZv
clRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0
eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCmluZGV4IGFmNmE1NmY5YmUyYTYwNDc4
MmM4NTBjMzFlZjU5ZDJmNDBjZGY1MGMuLmVmOTdiMGZjNTliNDQ1ZmU4MzQ4ZDNkZjQ5MDJlMGRk
ZTJiZDRjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC00MywxNSArNDMsMjEgQEAgdm9pZCBEZWJ1Z2dlckFj
dGl2YXRpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmpl
Y3QqIGFjdGkKICAgICBtX2FjdGl2YXRpb24uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0YXRpY19j
YXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRpb24pKTsKIH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2
YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIERlYnVnZ2Vy
QWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNp
dENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PERlYnVnZ2VyQWN0
aXZhdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKLSAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKIAotICAgIGlmIChtX2FjdGl2YXRpb24pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Fj
dGl2YXRpb24pOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24pCisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24pOwogfQogCiBVU3RyaW5nIERl
YnVnZ2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCBjY2RiZGU4ZjZj
YjQwYWI3MTlkNTQ4NmEwYTQ4NTRlNzA4ZmE5ZjcyLi5iMGMyMGMyY2M5MzlmZDliYzE3NGQ4NTI3
ZjgwZDc4MGZhYTI2N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIGFjdGl2YXRpb247CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0
dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggZmQ2NjhiZDll
ZGI2OTgxMWNiYTM5N2VhNzhkY2I3MTI5NWRjNTI5ZC4uYzM5YzU3ZmM0ZGRkMzAyNjNjNzA3MTU0
MGU1MDhkY2FhMTBkOGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
Y3BwCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCkKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CiAg
ICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA8IENvbXBvdW5kVHlw
ZSkgewotICAgICAgICBjZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOworICAgICAg
ICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgKnRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCkKICNlbHNlCiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0
TWFya1Zpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgIGNlbGwtPnZpc2l0Q2hpbGRyZW4oKnRoaXMp
OworICAgICAgICBjZWxsLT52aXNpdENoaWxkcmVuVmlydHVhbCgqdGhpcyk7CiAgICAgICAgIEFT
U0VSVChtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbik7CiAgICAgICAgIG1faXND
aGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKQEAgLTgwLDcg
KzgwLDcgQEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsKQogICAgICAgICBhc0FycmF5KGNlbGwpLT52aXNpdENoaWxkcmVuRGlyZWN0KCp0aGlzKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjZWxsLT52aXNpdENoaWxkcmVuKCp0aGlzKTsK
KyAgICBjZWxsLT52aXNpdENoaWxkcmVuVmlydHVhbCgqdGhpcyk7CiB9CiAKIHZvaWQgU2xvdFZp
c2l0b3I6OmRyYWluKCkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFp
bigpCiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKICAgICAgICAgICAgICAgICBt
X3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50KGNlbGwpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAg
Y2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgKnRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChjdXJy
ZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBtX21hcmtTZXRzLnJl
bW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCBlYzZjYzhmMWM3MjA3ZGE4M2Fm
MTUxNDI2YjlmNTgxYjE5ODQ2YzQ5Li5iZWYzMGQ4YmIzMThlMmViZTZmZDRjMzRjNDY4OWRmNTkx
NjMyZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAK
QEAgLTQzLDI1ICs0MywzMSBAQCBBcmd1bWVudHM6On5Bcmd1bWVudHMoKQogICAgICAgICBkZWxl
dGUgW10gZC0+ZXh0cmFBcmd1bWVudHM7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsK
K30KKwordm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxBcmd1bWVudHMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CiAKLSAgICBpZiAoZC0+cmVnaXN0ZXJBcnJheSkKLSAgICAgICAgdmlzaXRvci5hcHBl
bmRWYWx1ZXMoZC0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgZC0+bnVtUGFyYW1ldGVycyk7CisgICAg
aWYgKHRoaXNPYmplY3QtPmQtPnJlZ2lzdGVyQXJyYXkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VmFsdWVzKHRoaXNPYmplY3QtPmQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPmQt
Pm51bVBhcmFtZXRlcnMpOwogCi0gICAgaWYgKGQtPmV4dHJhQXJndW1lbnRzKSB7Ci0gICAgICAg
IHVuc2lnbmVkIG51bUV4dHJhQXJndW1lbnRzID0gZC0+bnVtQXJndW1lbnRzIC0gZC0+bnVtUGFy
YW1ldGVyczsKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoZC0+ZXh0cmFBcmd1bWVudHMs
IG51bUV4dHJhQXJndW1lbnRzKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVu
dHMpIHsKKyAgICAgICAgdW5zaWduZWQgbnVtRXh0cmFBcmd1bWVudHMgPSB0aGlzT2JqZWN0LT5k
LT5udW1Bcmd1bWVudHMgLSB0aGlzT2JqZWN0LT5kLT5udW1QYXJhbWV0ZXJzOworICAgICAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5kLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0
cmFBcmd1bWVudHMpOwogICAgIH0KIAotICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5jYWxsZWUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5kLT5jYWxsZWUpOwogCi0gICAgaWYgKGQt
PmFjdGl2YXRpb24pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5hY3RpdmF0aW9uKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+ZC0+YWN0aXZhdGlvbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPmQtPmFjdGl2YXRpb24pOwogfQogCiB2b2lkIEFyZ3VtZW50czo6Y29weVRv
UmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4
U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggNTYx
MTNkZmE2MWQwOTIyNWQxY2JjMTljMzljZjMyYTE0MzIzYjY3Mi4uNWUyMzA3NDZkYzNjY2UxM2Iz
MGY1MTZhZDUyMjY3OWI1YWY5OTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKQEAgLTkwLDcgKzkwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICB2b2lkIGZpbGxBcmdMaXN0
KEV4ZWNTdGF0ZSosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGM1OTMxOTc2NWExZWNkMTU2NzRm
ZGVmMDZiNzFlNGRkZDZhNWYxZS4uOTFmNmVmYTI1MDA0MzE0Y2ZjNmE4YzllYjYwNDI2NTg5OTA4
MmM4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
QEAgLTIzMCwxNCArMjMwLDIwIEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OmpldHRpc29uT3B0aW1p
emVkQ29kZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgQVNTRVJUKCFtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2spOwogfQogCi12b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgRXZhbEV4ZWN1dGFibGUqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2V2YWxDb2RlQmxvY2spCi0gICAg
ICAgIG1fZXZhbENvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNTRVJU
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2NrKQorICAgICAgICB0
aGlzT2JqZWN0LT5tX2V2YWxDb2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQog
CiB2b2lkIEV2YWxFeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCkBAIC0zNjYsMTQgKzM3MiwyMCBA
QCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCiAjZW5kaWYKIH0KIAotdm9p
ZCBQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
K3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5m
byk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBQcm9ncmFt
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIFByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKLSAgICBpZiAobV9wcm9ncmFtQ29kZUJsb2NrKQotICAgICAgICBtX3Byb2dyYW1D
b2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAg
IFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPm1fcHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhpc09iamVj
dC0+bV9wcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAogdm9p
ZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKQEAgLTU3NCwxOCArNTg2LDI0IEBAIHZv
aWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxECiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2sgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNr
KCk7CiB9CiAKLXZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0
dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgU2NyaXB0RXhlY3V0YWJs
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9uYW1lVmFsdWUpCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZtX25hbWVWYWx1ZSk7Ci0gICAgaWYgKG1fY29kZUJsb2NrRm9yQ2Fs
bCkKLSAgICAgICAgbV9jb2RlQmxvY2tGb3JDYWxsLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsK
LSAgICBpZiAobV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCi0gICAgICAgIG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVj
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5tX25hbWVWYWx1ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbmFtZVZhbHVlKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jb2RlQmxv
Y2tGb3JDYWxsKQorICAgICAgICB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwtPnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdCkKKyAgICAgICAgdGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQogCiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGlz
Y2FyZENvZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmlu
ZGV4IDc3Yjk2M2UxNGE5NjYzNjQ5NDBmMjE1MjI1OGYxMTM0OTk4ZmUwOWMuLmVhN2QxYmZmMzEw
YzkxM2QxNDUzNjU4YThhMGIxNTFmMjNhY2NmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTM1NCw3ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJv
b2wpOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRUeXBlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCB1bmxpbmtDYWxscygp
OwogCiAgICAgICAgIE93blB0cjxFdmFsQ29kZUJsb2NrPiBtX2V2YWxDb2RlQmxvY2s7CkBAIC00
MTcsNyArNDE4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxl
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgICAgICBKU09iamVjdCogY29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgSklUQ29kZTo6SklUVHlw
ZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwor
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKIAogICAgICAgICBPd25QdHI8UHJvZ3JhbUNv
ZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwpAQCAtNTcwLDcgKzU3Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7
IHJldHVybiBtX3N5bWJvbFRhYmxlOyB9CiAKICAgICAgICAgdm9pZCBkaXNjYXJkQ29kZSgpOwot
ICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdm9pZCB2
aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHN0YXRpYyBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3Rh
dGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7
CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuY3BwCmluZGV4IDk5MDJiNzY4ZjI2ODY2OWI4OWFiNmUzZGJlMmI3NDIxYzFlMTk2MzQuLjkx
Nzk1MzQ4MGU1MDQ3NDdhYjRkMDY1Yzk2NDVjN2ZmZTgwOWNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtMzAsMTYgKzMwLDIyIEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gR2V0dGVyU2V0dGVyOjpzX2luZm8g
PSB7ICJHZXR0ZXJTZXR0ZXIiLCAwLCAwLCAwIH07CiAKLXZvaWQgR2V0dGVyU2V0dGVyOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNDZWxsOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotCi0gICAgaWYgKG1fZ2V0dGVyKQotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9nZXR0ZXIpOwotICAgIGlmIChtX3NldHRlcikKLSAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fc2V0dGVyKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEdldHRlclNldHRlciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEdldHRlclNldHRlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNDZWxsOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgaWYgKHRoaXNPYmplY3QtPm1fZ2V0
dGVyKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZXR0ZXIpOworICAg
IGlmICh0aGlzT2JqZWN0LT5tX3NldHRlcikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fc2V0dGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IDE5Y2RiZGRiMDEyYWEyNDk1
YTY0MmRiMGYwMjQ4ZTcyNmJiNTE4ZmYuLmEzMTJmNzMwZGQzNWZjMGJlZWMzOGQzNzA3MTI1YzMw
MzIxYWFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5oCkBAIC01Myw3ICs1Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IGdldHRlclNldHRlcjsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
VmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgSlNPYmplY3QqIGdldHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZ2V0dGVyLmdldCgpOyB9CiAgICAgICAgIHZvaWQgc2V0R2V0dGVyKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGdldHRlcikgeyBtX2dldHRlci5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggZGJjOTY3ZTAzNjc2ZmE3MjQwM2VlZjY5NWQ1
NDk3MWM4ZmJkODg1ZS4uYTYxZDM3MWZjZTc1MWJjMzExZWRkNTI3YTg5N2UyZmEzMWQ3YmM5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBA
IC02MywyMiArNjMsMjggQEAgSlNBY3RpdmF0aW9uOjp+SlNBY3RpdmF0aW9uKCkKICAgICBzdGF0
aWNfY2FzdDxTaGFyZWRTeW1ib2xUYWJsZSo+KG1fc3ltYm9sVGFibGUpLT5kZXJlZigpOwogfQog
Ci12b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
K3ZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBY3RpdmF0aW9u
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAgIC8vIE5vIG5l
ZWQgdG8gbWFyayBvdXIgcmVnaXN0ZXJzIGlmIHRoZXkncmUgc3RpbGwgaW4gdGhlIFJlZ2lzdGVy
RmlsZS4KLSAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyQXJyYXkgPSBtX3JlZ2lz
dGVyQXJyYXkuZ2V0KCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5
ID0gdGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5LmdldCgpOwogICAgIGlmICghcmVnaXN0ZXJB
cnJheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0
ZXJBcnJheSwgbV9udW1QYXJhbWV0ZXJzTWludXNUaGlzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyhyZWdpc3RlckFycmF5LCB0aGlzT2JqZWN0LT5tX251bVBhcmFtZXRlcnNNaW51c1RoaXMp
OwogCiAgICAgLy8gU2tpcCB0aGUgY2FsbCBmcmFtZSwgd2hpY2ggc2l0cyBiZXR3ZWVuIHRoZSBw
YXJhbWV0ZXJzIGFuZCB2YXJzLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJy
YXkgKyBtX251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhl
YWRlclNpemUsIG1fbnVtQ2FwdHVyZWRWYXJzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhy
ZWdpc3RlckFycmF5ICsgdGhpc09iamVjdC0+bV9udW1QYXJhbWV0ZXJzTWludXNUaGlzICsgUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCB0aGlzT2JqZWN0LT5tX251bUNhcHR1cmVk
VmFycyk7CiB9CiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IGQ4NjM1OTNiMzJi
MTgwNGI2MTZlN2JhNWJjOGJmMWNjNWE2YTVmOWEuLjk5MTA5NzZkMzRmOThkYmRjYWRmOTg0MmVj
MTgwMjc1MzVlZmJjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCkBAIC01NSw3ICs1NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZp
cnR1YWwgfkpTQWN0aXZhdGlvbigpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Nj
b3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggNGIwY2FhMjIxNjgyZjZjNjhhNjA1ZThh
ZjllNTQwNjY1OGMwMzJjYS4uYzgzNjYxNWExMGJkYzdkYzg3ZWJiZmZiMjdlMzdiYTc4ZjlmNDg4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTg3MSwx
MiArODcxLDE4IEBAIHZvaWQgSlNBcnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywg
aW50IGNvdW50KQogICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKIH0KIAotdm9pZCBKU0FycmF5
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0FycmF5Ojp2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywg
dmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU0FycmF5Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9y
KTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlTnVtYmVyc0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEs
IGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5k
ZXggNTY2MjIyNWU1N2NkMTk3NTNjZDI5NDZlMWI2MmY1NzI2YzA2ZGI0Ny4uZThmZTc4OTUwMjhk
ZjkzNzI5YTMwMzQ2ZjAwZGNjZjVmZjU5OWViYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaApAQCAtMTcyLDcgKzE3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICB2b2lk
KiBzdWJjbGFzc0RhdGEoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdWJjbGFzc0RhdGEodm9p
ZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAKaW5kZXggZWE5YjBiMzEyN2E2ZjM2YzhkMjg0ZmMxOWFlNTVlNjQ1YzcxMWZjYS4uYmJj
OWJkOTMzZjQyNzkyMGY3NjQzYTNhNWUzNWMzYTFmZTIyYzk5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCkBAIC0xNDAsMTYgKzE0
MCwyMiBAQCB2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYgogICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CiB9CiAKLXZvaWQgSlNCb3VuZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBKU0JvdW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0JvdW5kRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJm1fdGFyZ2V0RnVuY3Rpb24pOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZtX2JvdW5kVGhpcyk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fYm91
bmRBcmdzKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90YXJnZXRGdW5jdGlv
bik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEFyZ3MpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmgKaW5kZXggMDI4MTcyYzIzOGVlN2E0MWRlYWM5ZTg3ZjA0NWQzZDQwYWM5N2Y4ZC4uNTI1
MGU5MDU0NTlhOTgzMDdmMjRjZTE5MDc4ODU3NWRjZThmNzY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKQEAgLTU3LDcgKzU3LDggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0hhc0luc3RhbmNlIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHJpdmF0ZToKICAgICBK
U0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBK
U09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5k
QXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDZkZjViOTg3
OTJmYjUxNTllMmU4YmJkYTVhZDMwZWMxOGUyOTM3N2MuLjllZTUyMmYwY2U4ZTJiNjVhZmMyZTUy
OWZmYTkwY2U1YTQ1Y2VhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CkBAIC04NCw3ICs4NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIFVTdHJp
bmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICAv
LyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVk
LgogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwpAQCAtMTc2LDkg
KzE3NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdl
dCgpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fc3RydWN0dXJlKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsK
KyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIEpTQ2VsbCogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpOworICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9zdHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIC8vIC0tLSBKU1ZhbHVl
IGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyZTBiZDAyZWJhZmQxMDlmYzQ1MGU2
ZGVmZjJjOTBjOWE4NGI5MzhlLi4zN2Y2NmMxODJjNTVkMTNhMDQ2NzM2ZWYyYzE1NjRlYjY5NGQ4
OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApA
QCAtMTUxLDE2ICsxNTEsMjIgQEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVk
RGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBuYW1lKGV4ZWMpOwogfQog
Ci12b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAg
dmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0Z1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNG
dW5jdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJm1f
c2NvcGVDaGFpbik7Ci0gICAgaWYgKG1fZXhlY3V0YWJsZSkKLSAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZXhlY3V0YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2Nv
cGVDaGFpbik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSk7CiB9CiAKIENhbGxUeXBlIEpT
RnVuY3Rpb246OmdldENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBlZjBkZDc3ZGI1NTk0MWRjNzlmMjlh
YjkzZmI1Y2Y3ZjViNmNjYTFmLi5hNWQwM2RkYjliM2Y1YmJhNjYxZjMxMmI5NDFiMDg4MmM2ZTc4
NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0x
MzQsNyArMTM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBK
U0Z1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0MTdmNWE3ZTllMjZkNGJlM2I3
M2IwYzk3Yzk3YjBhOTcwMzMwZmVlLi4zM2Q3YmM5MjYzMjM3MmJjZGE1Y2Q2NmUxNTJjNTNiMTlk
YmJkZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0zMDgsNjYgKzMwOCw3MiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNl
dFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJvdG90eXBlKGdsb2JhbERhdGEs
IG9iamVjdFByb3RvdHlwZSk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sgCisgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBKU1ZhcmlhYmxlT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotCi0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9n
bG9iYWxTY29wZUNoYWluKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX21ldGhvZENh
bGxEdW1teSk7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cENvbnN0cnVj
dG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Vycm9yQ29uc3RydWN0b3IpOwot
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZhbEVycm9yQ29uc3RydWN0b3IpOwotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IpOwotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAg
dmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9VUklFcnJvckNvbnN0cnVjdG9yKTsKLQotICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fZXZhbEZ1bmN0aW9uKTsKLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX2NhbGxGdW5jdGlvbik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9h
cHBseUZ1bmN0aW9uKTsKLQotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fb2JqZWN0UHJv
dG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Z1bmN0aW9uUHJvdG90eXBl
KTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FycmF5UHJvdG90eXBlKTsKLSAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Jvb2xlYW5Qcm90b3R5cGUpOwotICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX251bWJlclByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9kYXRlUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cFBy
b3RvdHlwZSk7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FyZ3VtZW50c1N0cnVj
dHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcnJheVN0cnVjdHVyZSk7Ci0g
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKLSAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsYmFja09iamVjdFN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9kYXRlU3RydWN0dXJlKTsKLSAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUpOwotICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZO
ZWVkZWQodmlzaXRvciwgJm1fZnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX251bWJlck9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fcmVnRXhwU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKLQotICAgIGlmIChtX3JlZ2lzdGVyQXJyYXkp
IHsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU1ZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhp
c09iamVjdC0+bV9nbG9iYWxTY29wZUNoYWluKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX21ldGhvZENhbGxEdW1teSk7CisKKyAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Vycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZXZhbEVycm9yQ29uc3RydWN0b3IpOwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fcmFuZ2VFcnJvckNvbnN0
cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZmVy
ZW5jZUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNP
YmplY3QtPm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmdGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsK
KworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90
eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9u
UHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X2Jvb2xlYW5Qcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fc3RyaW5nUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlz
T2JqZWN0LT5tX251bWJlclByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9kYXRlUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFByb3RvdHlwZSk7CisKKyAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZ0aGlzT2JqZWN0LT5tX2FyZ3VtZW50c1N0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrQ29uc3Ry
dWN0b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX251bGxQcm90b3R5cGVPYmpl
Y3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1f
ZXJyb3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNP
YmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX251bWJlck9iamVjdFN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1f
cmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0
LT5tX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKKworICAgIGlmICh0aGlz
T2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkpIHsKICAgICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0
aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLAogICAg
ICAgICAvLyB3ZSBjYW4gbWFyayB0aGUgdG9ybi1vZmYgYXJyYXkuCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJBcnJheS5nZXQoKSwgbV9yZWdpc3RlckFycmF5U2l6ZSk7
Ci0gICAgfSBlbHNlIGlmIChtX3JlZ2lzdGVycykgeworICAgICAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPm1fcmVn
aXN0ZXJBcnJheVNpemUpOworICAgIH0gZWxzZSBpZiAodGhpc09iamVjdC0+bV9yZWdpc3RlcnMp
IHsKICAgICAgICAgLy8gRHVyaW5nIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIg
dmFyaWFibGVzIGFyZSBpbiB0aGUgcmVnaXN0ZXIgZmlsZSwKICAgICAgICAgLy8gdGhlIHN5bWJv
bCB0YWJsZSB0ZWxscyB1cyBob3cgbWFueSB2YXJpYWJsZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0
ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0byB3aGVyZSB0aGV5IGVuZCwgYW5kIHRoZSByZWdpc3Rl
cnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJlZ2luLgotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyhtX3JlZ2lzdGVycyAtIHN5bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUo
KSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJz
IC0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS5zaXplKCksIHRoaXNPYmplY3QtPnN5bWJvbFRh
YmxlKCkuc2l6ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGNlZjNlZmVkNDM5Y2UzYjVhYTRkZjRiMTRlOWI0
Y2JkM2M5MGE0MDEuLjNmMGI4NWQ5NjliNmMwMTZiNmQ5YTVmMzU3MGI2MTVkYmIxM2NmMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
MTc1LDcgKzE3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA1MjM3MjFjZGJhMDZiNWUzZjQwZGQz
NDNlNmM3MWU5Y2QzN2Q0OTY2Li45YzgwMWI2YTRhMzYzNGQ0NzIxMzA4OTgyODU3OTdlZjI2ZDYy
ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02
OCwxNSArNjgsMjEgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICB9CiB9CiAKLXZvaWQg
SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9v
bCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIHZpc2l0Q2hpbGRyZW5E
aXJlY3QodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNp
dG9yKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1
bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDA1MmIxOWUwMWQ1ZDE3
Y2IwYjk5M2M0OTgyNGI0NjAxODkzNWMyMjcuLmVjYmRjNjg0MjJkOWIyMDE4MTM4MDgyY2FkOGZi
MzYzY2E0MTQ3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApA
QCAtNzksOCArNzksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVu
RGlyZWN0KFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICAvLyBUaGUgaW5saW5lIHZpcnR1YWwg
ZGVzdHJ1Y3RvciBjYW5ub3QgYmUgdGhlIGZpcnN0IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQK
ICAgICAgICAgLy8gaW4gdGhlIGNsYXNzIGFzIGl0IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWlu
ZyBnZW5lcmF0ZWQgYXMgYSB3ZWFrIHN5bWJvbApAQCAtODE2LDcgKzgxNyw3IEBAIGlubGluZSB2
b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKIAogQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxk
cmVuRGlyZWN0KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTQ2VsbDo6dmlzaXRDaGls
ZHJlbih2aXNpdG9yKTsKKyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAg
IHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCmluZGV4IDRjN2E2ZWU5Njc0NThlOTE0YTQ3MzBmZGU2NGEzYWE1ZTQ1
MTA5NTcuLmVhNDJkNzhmMGFkMjNjOTViODEzNjZlODI5MGY1YTMwYzViMzA5NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCkBAIC05MiwxMyArOTIsMTkgQEAgSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiAgICAg
cmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplKTsKLSAg
ICBpZiAobV9jYWNoZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7
Cit9CisKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
KyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5t
X2pzU3RyaW5ncy5nZXQoKSwgdGhpc09iamVjdC0+bV9qc1N0cmluZ3NTaXplKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBhNzE5ZGUxY2I4ZjI3MTZhNzZhMjVlNWNhMGMyNDdl
NzdhNzZhYmExLi5jNmY2OTc5NzJjYTc1NDZiNTJhNjQ2YjM3MGM5ZDBmZjU3MWM4NTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCkBAIC01OCw3ICs1OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCAmc19p
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIGludCYg
b2Zmc2V0KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCmluZGV4IDUyMDY1MTBkNmNkMmE3NzI0YTczYjVi
ZWQxMmExZjJkNmQ4Y2M3MTYuLjMxZGE4MGE3OWVjZDYwN2VlMTk5MjI3YjAyYWU3ZWQ0ZmQzZWIx
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuY3BwCkBAIC0zMiwxMyArMzIsMTkgQEAKIG5hbWVzcGFjZSBKU0MgewogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIAotdm9pZCBKU1N0
YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
OworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTdGF0aWNT
Y29wZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVG
bGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRo
b3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdpc3Rl
clN0b3JlKTsKIH0KIAogSlNPYmplY3QqIEpTU3RhdGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVj
dChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKaW5kZXggMWY4ZDhiOGZlZjNkOGJjM2MxZTJi
NWIyMDAxNmIyYTU5ZjVjNTI2ZS4uODIxMTc4YTlhZmI4NjNjMjZlN2ZmY2VhNmEyYTRlMDhjYjhl
ZWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICAg
ICAgcmV0dXJuIHNjb3BlT2JqZWN0OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNT
Y29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCA4
ZDYzODdlYzBhYjIwYWRmN2FmYTUzZTFmMTBmZGFkMDQzMGYwMWUyLi42OTE5MmZlM2NkNzgzZGYx
NGUwNDQ1NDk5OTJkZDk1ZGJmOWUwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKQEAgLTI2LDE0ICsyNiwyMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBwZXJPYmplY3QpOwog
Ci12b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikgCit2b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpIAogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNf
aW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dy
YXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU1dyYXBwZXJPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1dyYXBwZXJPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7Ci0gICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0g
ICAgaWYgKG1faW50ZXJuYWxWYWx1ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJu
YWxWYWx1ZSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1
ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCBjZjQ0ZTA0ZTc4NWQyNGU0OWEwYjljNTU3MmQ1
ZTE1YzJhN2I0OTM0Li45NTk2YWE0ZTMyMGY5MjZlY2U3ZjFmYWI2ODQzZWQ0ZjlhMTFkMzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApA
QCAtNDUsNyArNDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTTm9uRmlu
YWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgCiAgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYTEwM2MzNzYxMzYyYzI1M2I2Y2UyOGRhMWYyYzAyYTYxYWY2Y2RmNy4uZTU4
MWRhOWY0NDljZjM5MjQzOTg1MWE4MDZiZTE5OWM1NTU5NDAwNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
QEAgLTM3LDE0ICszNywyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cgogewogfQogCi12b2lk
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
cywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9p
ZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgSW50ZXJuYWxG
dW5jdGlvbjo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV9lcnJvclN0cnVjdHVy
ZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEludGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IGNjNDYzNWI1MGUw
ODU2OWVlMGQ5NWNmMWE4MDA1MmRmOTcwYWM1MDEuLjhjMjcyZWFhMmE4NjRjMDgwYTFkMjE0ZGNm
M2ViNzZmOGJlMGEzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTcwLDcgKzcwLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5k
ZXggYmFlOTA4NjFlYTUzNTkwNmI5ZWE1NjVhYzdhZDJjMzQ0YzFlNmM1Zi4uMTIzZGQ2ZTlhMTZm
ZjY5MmY2YjI3NDdiZDIwZmRiMmY3MjBkNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03OCwxNiArNzgsMjIgQEAgUmVnRXhwT2Jq
ZWN0Ojp+UmVnRXhwT2JqZWN0KCkKIHsKIH0KIAotdm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0
b3IpOworfQorCit2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9
IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwotICAgIGlmIChkLT5yZWdFeHApCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5yZWdF
eHApOwotICAgIGlmIChVTkxJS0VMWSghZC0+bGFzdEluZGV4LmdldCgpLmlzSW50MzIoKSkpCi0g
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5sYXN0SW5kZXgpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRo
aXNPYmplY3QtPmQtPnJlZ0V4cCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
PmQtPnJlZ0V4cCk7CisgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0LT5kLT5sYXN0SW5kZXgu
Z2V0KCkuaXNJbnQzMigpKSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmQt
Pmxhc3RJbmRleCk7CiB9CiAKIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgKaW5kZXggYzlmYjAwYmYwOTA4M2MyZTkxNTc4NGNhNzNlMjYxNWE0ZTUyZTczMC4uMTFlMDE5
NWVhOTg1NjVjYTcxMTlkMDdhNDE2M2YyM2UwMzM0ZGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTgyLDcgKzgyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9vbCBtYXRjaChFeGVj
U3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNw
cAppbmRleCBkZjRkYTQxYzAyMTM5NDI3MDY1NGMwNTFjNmY3YzhlNTI4ODVlYzY1Li4xM2I3OWQ5
YjBkZjc5ZmMxMTU5ODg0OTU2NDc5N2UwMmU4NDczM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcApAQCAtNjcsMTYgKzY3LDIyIEBAIGludCBTY29w
ZUNoYWluTm9kZTo6bG9jYWxEZXB0aCgpCiAgICAgcmV0dXJuIHNjb3BlRGVwdGg7CiB9CiAKLXZv
aWQgU2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2
b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU2NvcGVDaGFpbk5v
ZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBTY29wZUNoYWluTm9kZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFNjb3BlQ2hhaW5O
b2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOwotICAgIGlmIChuZXh0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbmV4dCk7Ci0gICAg
dmlzaXRvci5hcHBlbmQoJm9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbE9iamVj
dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbFRoaXMpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5uZXh0KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bmV4dCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm9iamVjdCk7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPmdsb2JhbFRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBkZDUw
MDRiNTAwYTgyY2FjNGVlYWYyYmJjNTc1Yjc4ZmQ4NDdkZjRhLi5hYzUyYzY3N2JiNTQxOTY3YjQw
MDY5MDZjM2Y0Yzc1ZmVmZWE0ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oCkBAIC04Nyw3ICs4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAg
ICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5m
byk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7
CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCAzMTNhODUxODcxNGQ2YzVmYmEzNTdiOWUzOWVkM2VmNjJmYzk0YjZjLi40ZWRk
ZTlmNGJlYTllZmQ5MDU1Y2YyMDYyMjVhOTE4MjMwYTBhYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTcyNCwyNiArNzI0LDMyIEBAIHZvaWQg
U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lQXJyYXkmIHByCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKLSAgICBpZiAobV9nbG9iYWxPYmplY3QpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZt
X2dsb2JhbE9iamVjdCk7Ci0gICAgaWYgKG1fcHJvdG90eXBlKQotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9wcm90b3R5cGUpOwotICAgIGlmIChtX2NhY2hlZFByb3RvdHlwZUNoYWluKQotICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRQcm90b3R5cGVDaGFpbik7Ci0gICAgaWYgKG1f
cHJldmlvdXMpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3ByZXZpb3VzKTsKLSAgICBpZiAo
bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3Bl
Y2lmaWNWYWx1ZUluUHJldmlvdXMpOwotICAgIGlmIChtX2VudW1lcmF0aW9uQ2FjaGUpCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2VudW1lcmF0aW9uQ2FjaGUpOwotICAgIGlmIChtX3Byb3Bl
cnR5VGFibGUpIHsKLSAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9w
ZXJ0eVRhYmxlLT5lbmQoKTsKLSAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBw
dHIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Cit2b2lk
IFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBTdHJ1Y3R1cmU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBTdHJ1Y3R1cmUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPm1fcHJvdG90eXBlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9w
cm90b3R5cGUpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluKQor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFp
bik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fcHJldmlvdXMpCisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2VudW1l
cmF0aW9uQ2FjaGUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VudW1l
cmF0aW9uQ2FjaGUpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUpIHsKKyAg
ICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+bV9wcm9wZXJ0
eVRhYmxlLT5lbmQoKTsKKyAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIg
PSB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRy
KSB7CiAgICAgICAgICAgICBpZiAocHRyLT5zcGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZwdHItPnNwZWNpZmljVmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGQ2MDczN2U1ZGZiMjM4MDAw
ZjhlYTlkMWVjYzVkMDZlODgxZDc1NGQuLjk1OGFkMWI3NWI4ZmU1N2JiYjU2ZmRlOGJiODM4ZjVl
YjJkZjY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBA
IC0xMzAsNyArMTMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgc3RvcmVk
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAg
dm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIFN0cnVjdHVyZSogcHJldmlv
dXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZv
KTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlU
cmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCAzZTBmMDI4
ZWI3MDdjN2UxMTcxMWU4MGFlODRmOTI5ODgzOTA4YTE0Li4wZmIyOGRlNWZlN2E2YjQwZmJjZWM2
NWU3NTQ4MzQxOWYwZmMzNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC00MywxMyArNDMsMTkgQEAgU3RydWN0dXJlQ2hhaW46
On5TdHJ1Y3R1cmVDaGFpbigpCiB7CiB9CiAKLXZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTdHJ1Y3R1cmVDaGFpbiog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUNoYWluKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKICAgICBzaXplX3QgaSA9IDA7Ci0gICAgd2hpbGUgKG1fdmVjdG9yW2ldKQotICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmbV92ZWN0b3JbaSsrXSk7CisgICAgd2hpbGUgKHRoaXNPYmplY3Qt
Pm1fdmVjdG9yW2ldKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV92ZWN0
b3JbaSsrXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKaW5kZXggY2RkNjRlZjZhNjFhZTQxNDQwMzNi
MDdmYzFlYzE5MjcwMzFhZGQwYi4uMTkwYzVjMmY0ZTQ0N2VjYzIwOTE4MmRhZWQ4NDVlNTBmMTlm
OThmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCkBAIC01Miw3ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IGNoYWluOwogICAgICAgICB9CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFk
KCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxv
ZwppbmRleCBhNzJjNWNlZDU5ZmIzZDhhZjNkMmMwYzFlODQwNGM4MTMxM2YyYzhiLi5lMzY2YzMy
OTU3Y2U4YWFmYjYxMTBjMWE0YjQ3NDY0ZGQwOWUxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBqdXN0IGV4dHJhY3QgdGhlIGJvZGllcyBvZiB0aGUgdmly
dHVhbCB2aXNpdENoaWxkcmVuIG1ldGhvZHMKKyAgICAgICAgdGhyb3VnaG91dCB0aGUgSlNDZWxs
IGluaGVyaXRhbmNlIGhpZXJhcmNoeSBvdXQgaW50byBzdGF0aWMgbWV0aG9kcywgd2hpY2ggYXJl
IAorICAgICAgICBub3cgY2FsbGVkIGZyb20gdGhlIHZpcnR1YWwgbWV0aG9kcy4gIFRoaXMgaXMg
YW4gaW50ZXJtZWRpYXRlIHN0ZXAgaW4gdHJ5aW5nIHRvIAorICAgICAgICBtb3ZlIHRoZSB2aXJ0
dWFsLW5lc3Mgb2YgdmlzaXRDaGlsZHJlbiBpbnRvIG91ciBvd24gY3VzdG9tIHZ0YWJsZSBzdG9y
ZWQgaW4gCisgICAgICAgIENsYXNzSW5mby4gIFdlIG5lZWQgdG8gY29udmVydCB0aGUgbWV0aG9k
cyB0byBzdGF0aWMgbWV0aG9kcyBpbiBvcmRlciB0byBiZSAKKyAgICAgICAgYWJsZSB0byBtb3Jl
IGVhc2lseSBzdG9yZSBhbmQgcmVmZXIgdG8gdGhlbSBpbiBvdXIgY3VzdG9tIHZ0YWJsZSBzaW5j
ZSBub3JtYWwgCisgICAgICAgIG1lbWJlciBtZXRob2RzIHN0b3JlIHNvbWUgaW1wbGljaXQgaW5m
b3JtYXRpb24gaW4gdGhlaXIgdHlwZXMsIG1ha2luZyBpdCAKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBzdG9yZSB0aGVtIGdlbmVyaWNhbGx5IGluIENsYXNzSW5mby4KKworICAgICAgICAqIFVzZXJP
YmplY3RJbXAuY3BwOgorICAgICAgICAoVXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoVXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
VXNlck9iamVjdEltcC5oOgorCiAyMDExLTA5LTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5k
IGNvbnN0cnVjdG9ycyBpbiBKU0NlbGwgaGllcmFyY2h5ICg2LzcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXggYWQzNjkzYjNhZDEzMDVlMGE5YzI0NmViNmM5OTgx
MzM2MWUwZjRiZS4uNmMzYTdkNDk1YWUxNDUxZTcxMGZmYTlhMGNhNzA0M2E3YzBhZjcyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAtNDA0LDkgKzQwNCwxNSBA
QCBVU3RyaW5nIFVzZXJPYmplY3RJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIFVzZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChmSlNVc2VyT2JqZWN0KQotICAgICAgICBmSlNVc2Vy
T2JqZWN0LT5NYXJrKCk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgVXNlck9iamVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PFVzZXJPYmplY3RJbXAqPihjZWxsKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+ZkpTVXNlck9iamVjdCkK
KyAgICAgICAgdGhpc09iamVjdC0+ZkpTVXNlck9iamVjdC0+TWFyaygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXggNDNmZjBkYThkNzU2YWZlNmZmM2Q3Yzg2Mzlh
OWQzMTNhYWQwNWJiYi4uYTg2YjUyY2IzNjNhOGQ3ZTAxNGU4ODEyYjM5N2ZhYzdkY2M1ODUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCkBAIC02Miw3ICs2Miw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0
OwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJP
YmplY3QgKkdldEpTVXNlck9iamVjdCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNjZmUxZDBl
MTE5NmVhN2MwNTM5NzMxZmUwNDA1MDEzMGI4YzVhNC4uYjY1NzhkZWRiODUwMWQxZTMzZTkyNzM3
MDkwYzk3M2U5ZDU4ZWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMS0wOS0y
MiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAg
IEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwg
dmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhl
cml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAg
ICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGlu
dGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1u
ZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGlu
IAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8g
c3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNp
bHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9y
bWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0
aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3Rv
cmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0luZm8uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0F0dHI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0Ojp2aXNp
dENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0
dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxk
cmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwp
OgorICAgICAgICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5v
ZGVNYXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWRO
b2RlTWFwOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05v
ZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9k
ZUZpbHRlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRl
cmF0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdFbGVtZW50SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyOjp2aXNpdENoaWxkcmVu
VmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVl
V2Fsa2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVX
YWxrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2Vy
Q29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3Jr
ZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVl
c3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJl
blZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVu
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorCiAyMDExLTA5LTIyICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRvIHVwZGF0ZSBz
Y3JvbGxiYXJzIGluIFNjcm9sbFZpZXc6OnNldEZyYW1lUmVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCAzZjNkMWUwNDFhYTA3MTYxMzAwOWViMTEwMDAyMjc2NjEyMWJkYzRlLi4xMmMwYjgxOTBj
NTc5NzM4ZjY2NDBiZDI2ODc5MTNkYjgyZjAxMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
ODE1LDcgKzgxNSw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I2aW5kZW50RXYKIF9fWk43V2ViQ29y
ZTZFZGl0b3I3Q29tbWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Y29tbWFuZEVSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2Ci1fX1pON1dlYkNvcmU2SlNO
b2RlMTN2aXNpdENoaWxkcmVuRVJOM0pTQzExU2xvdFZpc2l0b3JFCitfX1pON1dlYkNvcmU2SlNO
b2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9yRQogX19aTjdXZWJD
b3JlNkpTTm9kZTNwdXRFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdK
U1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5m
b0UKIF9fWk43V2ViQ29yZTZSZWdpb241dW5pdGVFUktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCmluZGV4IDQ0OWE1Y2UxMjc3OWZkNjg2MzBlMzZlMzA1
YzBjYzE4OTFmYmE3MWYuLjNiMTA4NmQ1NzRmOTY3NzdkNDI5NGUwMTlkYTMxODg2OGZhY2FiMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcApAQCAtMzks
MTQgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAotdm9pZCBKU0F0dHI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTQXR0cjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2
aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQXR0cjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXR0ciog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQXR0cio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLT5vd25l
ckVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLT5v
d25lckVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYzhlMWVjZTgx
ZWVkMjE0YmQ0MmVjYWM1ZDQwZDM5ZGRiYWVmMzQ4Ny4uNGU2YTQ2ZDMxNTY3NDdmNjk3MTJjNGMy
ZmI1M2EyOWMxYTNiZTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtMzksMTMgKzM5LDE5IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0F1ZGlvQ29udGV4dDo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNBdWRpb0NvbnRleHQ6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0
aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9Db250ZXh0
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBdWRpb0NvbnRleHQqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBtX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQXVk
aW9Db250ZXh0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3Bw
CmluZGV4IDE1NWJhNmUzY2M1MTVkNGVkOTVlYTE5ZmI0NDI5MzRkZTAyMjVjMDUuLjcxYjA2Y2Ux
ZDI5Njc4NTg4YzcwNjE1ZGIyZTFmMGVmNWQ5YjZkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcApAQCAtNDgsMTMgKzQ4LDE5IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0NTU1J1bGU6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQ1NTUnVsZTo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQ1NTUnVsZSogdGhpc09iamVjdCA9
IHN0YXRpY19jYXN0PEpTQ1NTUnVsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENTU1J1bGUqIHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA0NjVlNzgzNGE1ZDYw
ZWM2MmEwZmE0YThkOGVjZTQ0MmJmYWQyZTE0Li5jZDlhY2VlOGQxODRmMjAzZjlmYjgyN2ZlMmJl
MDAyOGU1NjU2MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTQzLDEzICs0MywxOSBAQCB1
c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5m
byk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwog
fQogCiAvLyBDaGVjayBmb3IgYSBDU1MgcHJlZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggYWQ2NDZhMDUzMjgyNzI1YmEwOTJjNTgyMzIxNmY3ZjA1ZDlmYzQ2MS4uZGE2MDI4YzA4
NjY2MzU1ZTI0MjIwNmMyNjE4NmIyOTMwNjg5NjU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCkBAIC0zOSwxNCArMzksMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2
aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
IAotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y2FudmFzKCkpKTsKKyAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCktPmNhbnZhcygp
KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggNzFkOThjOTFhNTdkN2I2MTMzMTdkYTZhN2I0ODEyNTQ3MDUxNDIwYy4uNTI4NjdkMzBh
ODY3OTAxOWNjMThiMzhiNDg1MmQ2YWJlMjY1OGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTUsMjMgKzU1LDI5IEBAIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNPYmplY3QqIHRoaXNWCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0K
IAotdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNET01HbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICBKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgZW5kID0g
c3RydWN0dXJlcygpLmVuZCgpOwotICAgIGZvciAoSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9y
IGl0ID0gc3RydWN0dXJlcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICBKU0RPTVN0
cnVjdHVyZU1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3RydWN0dXJlcygpLmVuZCgp
OworICAgIGZvciAoSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+
c3RydWN0dXJlcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgdmlzaXRvci5h
cHBlbmQoJml0LT5zZWNvbmQpOwogCi0gICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3Ig
ZW5kMiA9IGNvbnN0cnVjdG9ycygpLmVuZCgpOwotICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1h
cDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsr
aXQyKQorICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVuZDIgPSB0aGlzT2JqZWN0
LT5jb25zdHJ1Y3RvcnMoKS5lbmQoKTsKKyAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0
ZXJhdG9yIGl0MiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBl
bmQyOyArK2l0MikKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0Mi0+c2Vjb25kKTsKIAotICAg
IGlmIChtX2luamVjdGVkU2NyaXB0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9pbmplY3Rl
ZFNjcmlwdCk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1faW5qZWN0ZWRTY3JpcHQpCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KTsKIH0KIAogdm9p
ZCBKU0RPTUdsb2JhbE9iamVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBjdXJyZW50RXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRl
eCA5MDAyODMwODM0ZTBmMzBiMWJlMGQ0MmY4MTZiOTJlOTMxMjU5NGMwLi45OWE2MzFmYzkzNjk4
YTc5YjJjYjcwYzE0NGVhMmUxN2VlNmEwOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTY0LDcgKzY0LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0KEpTT2JqZWN0Kik7CiAgICAg
ICAgIEpTT2JqZWN0KiBpbmplY3RlZFNjcmlwdCgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsK
IAogICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQo
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggYmY0NGJkYmRjZjRlYzkyNjNjN2Y5ZjAyMDUzNzI5M2U3OTczYTBiMC4uYWRi
MDUxZjc2NzhhN2MzMDQ3N2U3NTRhZTdkMjUwZDIxMTM1YmMzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzcsMTUgKzc3LDIx
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBK
U0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNE
T01XaW5kb3c6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NV2lu
ZG93KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaW1wbCgpLT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUo
KSkKKyAgICB0aGlzT2JqZWN0LT5pbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9y
KTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKQog
ICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZnJhbWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDE1ODhkNGZlZDAy
MWVlNmNjNjZmZjUzOWI4ZjAwNDZhM2ViZDk0YTcuLmUxMDY2ODhjYmRkZDBhNTRmZWMxM2I2NzY5
NTE5OTkyNjE0YmMwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuY3BwCkBAIC04MywxNCArODMsMjAgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxs
OjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdykKIC8vIEpTT2JqZWN0
IG1ldGhvZHMKIC8vIC0tLS0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxk
cmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2
aXNpdG9yKTsKK30KKwordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNET01XaW5kb3dTaGVsbCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3dpbmRvdyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV93aW5kb3cp
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpbmRvdyk7CiB9CiAKIFVT
dHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBmZThhNGZkZTA5MTYyMzFm
ZDM3ZDYzZmNhMTQ4ZDM4N2JjZGUzODg1Li5lOWFiYzE1ODEyY2Y0NjdhMGYyODI2ZjZhMzA1OGM5
OGU5M2YwNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCkBAIC03Nyw3ICs3Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCk7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDOjpTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJl
blZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFs
IEpTQzo6VVN0cmluZyBjbGFzc05hbWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2Rl
Q3VzdG9tLmNwcAppbmRleCBlYmMyM2IzNmNkM2U0NzU0NjM3ZTQyM2U3YjZjZTZhMDI0OTcxMDNm
Li4wMDRkOGJlOWRiNTI5N2EzOGJjYTBkNjEzODBkY2YyNGYxNTdmMzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1
c3RvbS5jcHAKQEAgLTM0LDEzICszNCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0phdmFTY3Jp
cHRBdWRpb05vZGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0phdmFTY3JpcHRBdWRpb05v
ZGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0g
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBzdGF0aWNfY2FzdDxK
YXZhU2NyaXB0QXVkaW9Ob2RlKj4oaW1wbCgpKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0
b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisgICAgc3RhdGljX2Nhc3Q8SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KHRoaXNP
YmplY3QtPmltcGwoKSktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCAzNGY1OTMxMzM1ZmQ3YThiZTczMzJh
ZjRiYzk0Y2M3NjlhZDAyY2NkLi5mYTE5YzlkMjJjMGE2ZWQ5YmZkN2IzZDZjNDdjZDI0YWYyNjgy
YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcApAQCAtMzIsMTggKzMyLDI0IEBACiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi12b2lkIEpTTWVzc2FnZUNoYW5uZWw6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisKK3ZvaWQgSlNNZXNzYWdlQ2hhbm5l
bDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICBKU01lc3NhZ2VD
aGFubmVsKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNNZXNzYWdlQ2hhbm5lbCo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVu
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQo
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoTWVzc2FnZVBv
cnQqIHBvcnQgPSBtX2ltcGwtPnBvcnQxKCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0g
dGhpc09iamVjdC0+bV9pbXBsLT5wb3J0MSgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJv
b3QocG9ydCk7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBtX2ltcGwtPnBvcnQyKCkp
CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09iamVjdC0+bV9pbXBsLT5wb3J0Migp
KQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggOGFk
ZjRhN2JiMzhlZGEwZTQ2YjQwNDQ0ZjRhZDM4ZmI1Y2JmMWExMi4uOWVlZDczOTAxY2Y3YTc4YmEz
N2MwNjRiMjAxMDE1MDA1M2MzYWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTQyLDE4ICs0MiwyNCBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNNZXNzYWdlUG9y
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNNZXNzYWdlUG9y
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVu
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01lc3NhZ2VQb3J0
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNNZXNzYWdlUG9ydCo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbG9jYWxs
eSBlbnRhbmdsZWQgcG9ydCwgd2UgY2FuIGRpcmVjdGx5IG1hcmsgaXQgYXMgcmVhY2hhYmxlLiBQ
b3J0cyB0aGF0IGFyZSByZW1vdGVseSBlbnRhbmdsZWQgYXJlIG1hcmtlZCBpbi11c2UgYnkgbWFy
a0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCkuCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0g
bV9pbXBsLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IHRoaXNPYmplY3QtPm1faW1wbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKICAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogCi0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbXBsLT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAppbmRleCA0N2Y1NmEyOWVmNDRhY2Mw
MTBmNTc0OTI4NzFjNmEwY2FlZDcwODhkLi5hMTBkNTJhMTlhN2IzOGIxMzQwNjk0ZjI0NTNmYWU4
NDJkODg0OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1l
ZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNSw2ICszNSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKIGJvb2wgSlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBOYW1lZE5vZGVNYXAqIGltcGwsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gaW1wbC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKQEAgLTQ2LDE4ICs1MSwxOSBAQCBKU1ZhbHVlIEpTTmFt
ZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbgogICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgp
LCB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSkpOwogfQogCi12b2lkIEpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgSlNOYW1lZE5vZGVNYXAqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU05hbWVkTm9kZU1hcCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgdGhlIHdyYXBwZXIgZm9y
IG91ciB1bmRlcmx5aW5nIE5hbWVkTm9kZU1hcCdzIGVsZW1lbnQKICAgICAvLyBhbGl2ZSBiZWNh
dXNlIE5hbWVkTm9kZU1hcCBhbmQgQXR0ciByZWx5IG9uIHRoZSBlbGVtZW50IGZvciBkYXRhLCBh
bmQKICAgICAvLyBkb24ndCBrbm93IGhvdyB0byBrZWVwIGl0IGFsaXZlIGNvcnJlY3RseS4KICAg
ICAvLyBGSVhNRTogRml4IHRoaXMgbGlmZXRpbWUgaXNzdWUgaW4gdGhlIERPTSwgYW5kIHJlbW92
ZSB0aGlzLgotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBpbXBsKCktPmVsZW1lbnQoKTsKKyAgICBF
bGVtZW50KiBlbGVtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLT5lbGVtZW50KCk7CiAgICAgaWYg
KCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJv
b3QoZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggNTFlM2JiODZhYWVlMzJiNWYyMTY1OWJlMTM3YzgyYTQ0MzJmZGYxMS4uOTcxNTI2
NjUwYWM0YmJiMDQ1MTQ1MWZiMjY0ZTQ0NGZiNTFjNDUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xOTIsMTQgKzE5MiwyMCBAQCBTY29wZUNo
YWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiwgU2NvcGVD
aGFpbk5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLXZvaWQgSlNOb2RlOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU05vZGU6OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9y
KTsKK30KKwordm9pZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU05vZGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U05vZGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAg
Tm9kZSogbm9kZSA9IG1faW1wbC5nZXQoKTsKKyAgICBOb2RlKiBub2RlID0gdGhpc09iamVjdC0+
bV9pbXBsLmdldCgpOwogICAgIG5vZGUtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsK
IAogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KG5vZGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IGMxNTFjNTRj
NGEwMmE5NGY1YjIyZDQzYWE2NmEyZTQxOGZlMzIxNDEuLjU2MDgxZWMxMzU2OTVjYjBiMDgyMWMy
NmNjZjUyYjdjYTY2Y2I5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcApAQCAtMzYsMTMgKzM2LDE5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU05vZGVGaWx0ZXI6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTm9kZUZpbHRlcjo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9kZUZpbHRlciogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEpTTm9kZUZpbHRlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChpbXBsKCkpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHRoaXNPYmplY3QtPmltcGwoKSk7CiB9CiAKIFBhc3NSZWZQ
dHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmlsdGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0
ZXJhdG9yQ3VzdG9tLmNwcAppbmRleCAwMmQxMDhkMjRmNWRmYWFlMDkzYTFkZWNjYTViMjc2Yzcx
Mzg4YjBhLi43MDU1OTQ2MmE1Nzg4NWQ5NjZiMDk1Y2E1ZjEzNTVlYjAwMjgwMjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
CkBAIC0yOSwxNCArMjksMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
LCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lk
IEpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNOb2RlSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU05vZGVJdGVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gbV9pbXBsLT5maWx0ZXIoKSkKKyAg
ICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gdGhpc09iamVjdC0+bV9pbXBsLT5maWx0ZXIoKSkK
ICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRlcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9t
LmNwcAppbmRleCBkZDIwZmJhMGI3ODNkMDEzZjQyNGI1NzUyZTVjYTdlODkwMTE3YTM0Li44N2U2
YmY2MzlkOTBlNDNkNzQ5MzQyMjNhY2JhOGYwMjA3YTE5ZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3Bw
CkBAIC0zNSwxMyArMzUsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTU1ZH
RWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTU1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
cywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9p
ZCBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0M6OkpTQ2VsbCogY2VsbCwg
SlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1NWR0VsZW1lbnRJbnN0YW5jZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU1ZHRWxlbWVudEluc3RhbmNlKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIEpTQzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cm9vdChpbXBsKCktPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKTsKKyAgICBBU1NFUlQodGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKS0+Y29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKaW5kZXggM2UzNzk2
OTM3Y2RlYThmZTVkNGM2YWIwN2YyNGRmMmVhOWVlZjRkYy4uOWYzOWExNGU3NWMzYzU0ZDUxMGEx
MzNjN2Y3MGFiMjY4YTc0MDBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcApAQCAtNDMsMTQgKzQzLDIwIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1NoYXJlZFdvcmtl
cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTaGFyZWRXb3Jr
ZXI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU2hhcmVkV29y
a2VyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3JrZXIqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBw
b3J0ID0gaW1wbCgpLT5wb3J0KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGhpc09i
amVjdC0+aW1wbCgpLT5wb3J0KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNo
ZWV0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1
c3RvbS5jcHAKaW5kZXggMjFlMDBiMTY4YzIyNTQxMTgxMTRkMmE0OTFlMWU0ZTIwNTExYzZlNi4u
MmQ3MjZhYmIxN2Y4ZjRmMzc0ODNhNWE0MDIzYWUzYTBjNjQ4MGNjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCkBAIC0zNSwxMyAr
MzUsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3Zv
aWQgSlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAg
IHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTdHlsZVNoZWV0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNTdHlsZVNoZWV0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTdHlsZVNoZWV0Kj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
ICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3QoaW1wbCgpKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0
aGlzT2JqZWN0LT5pbXBsKCkpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3Bw
CmluZGV4IGRmZjM0NjljZTI5ODA3NDZhNTIzMWU1ZDEzNjM5NzQ1MGJmYzI2NWMuLjk1ZWRjMDVh
NWE4MTY2N2NjNmExZjAyZWI4YTM3OWE3MTJkMTEwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcApAQCAtMjgsMTUgKzI4LDIxIEBA
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi12b2lk
IEpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKKwordm9p
ZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNUcmVl
V2Fsa2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICBK
U1RyZWVXYWxrZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1RyZWVXYWxrZXIqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwog
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE5vZGVGaWx0
ZXIqIGZpbHRlciA9IG1faW1wbC0+ZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRl
ciA9IHRoaXNPYmplY3QtPm1faW1wbC0+ZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChmaWx0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggY2Q1NTI4
NDBjMzgxYjJkYTY1YTY3OGZhYThiYTdiM2E4MzhlY2I3YS4uMGU0N2Y1MzIyNDFjZmNmZDQ2NzM5
ZjFmNDM2ZWIzMDk0OGYzOWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTkyLDEz
ICsxOTIsMTkgQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KICAgICByZXR1cm4ganNOdWxsKCk7
CiB9CiAKLXZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KGltcGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09i
amVjdC0+aW1wbCgpKTsKIH0KIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDg4N2EzYmMwNDVl
OWJkNzFiN2Q0ZjJiNmYxOTljMzFkNjdlZDcwNmIuLmY5MDA0OTYwYjQ1ZGY0YjFiZjViZmIwMjk2
Mzg4M2M3MWIzYjQwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNTMsMTkgKzUzLDI1IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1dvcmtlckNvbnRleHQ6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTV29ya2VyQ29udGV4
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVu
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTV29ya2VyQ29u
dGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoV29ya2VyTG9jYXRp
b24qIGxvY2F0aW9uID0gaW1wbCgpLT5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYgKFdvcmtl
ckxvY2F0aW9uKiBsb2NhdGlvbiA9IHRoaXNPYmplY3QtPmltcGwoKS0+b3B0aW9uYWxMb2NhdGlv
bigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobG9jYXRpb24pOwotICAgIGlmIChX
b3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IGltcGwoKS0+b3B0aW9uYWxOYXZpZ2F0b3IoKSkK
KyAgICBpZiAoV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSB0aGlzT2JqZWN0LT5pbXBsKCkt
Pm9wdGlvbmFsTmF2aWdhdG9yKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZp
Z2F0b3IpOwogCi0gICAgaW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cisg
ICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9
CiAKIGJvb2wgSlNXb3JrZXJDb250ZXh0OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyNTc1NzU2NjY2ZGZlNjBlN2EzZDI0ZGE3YTA5MWVhMDMz
YjkxYmQyLi42MDkxMzgzNjE2ODVhNTliNTUxMGFhNTVkMTQxYTJiMjQ5NTJhOWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcApAQCAtNTQsMjggKzU0LDM0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9
CisKK3ZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTWE1MSHR0cFJlcXVlc3QqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1hNTEh0dHBSZXF1ZXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChT
dHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChYTUxIdHRwUmVxdWVzdFVwbG9hZCogdXBsb2Fk
ID0gbV9pbXBsLT5vcHRpb25hbFVwbG9hZCgpKQorICAgIGlmIChYTUxIdHRwUmVxdWVzdFVwbG9h
ZCogdXBsb2FkID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFVwbG9hZCgpKQogICAgICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodXBsb2FkKTsKIAotICAgIGlmIChEb2N1bWVudCogcmVz
cG9uc2VEb2N1bWVudCA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZVhNTCgpKQorICAgIGlmIChE
b2N1bWVudCogcmVzcG9uc2VEb2N1bWVudCA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxS
ZXNwb25zZVhNTCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocmVzcG9uc2VEb2N1
bWVudCk7CiAKLSAgICBpZiAoQXJyYXlCdWZmZXIqIHJlc3BvbnNlQXJyYXlCdWZmZXIgPSBtX2lt
cGwtPm9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpKQorICAgIGlmIChBcnJheUJ1ZmZlciog
cmVzcG9uc2VBcnJheUJ1ZmZlciA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxSZXNwb25z
ZUFycmF5QnVmZmVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZUFy
cmF5QnVmZmVyKTsKIAogI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKLSAgICBpZiAoQmxv
YiogcmVzcG9uc2VCbG9iID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQorICAgIGlm
IChCbG9iKiByZXNwb25zZUJsb2IgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsUmVzcG9u
c2VCbG9iKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZUJsb2IpOwog
I2VuZGlmCiAKLSAgICBtX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAg
ICB0aGlzT2JqZWN0LT5tX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0K
IAogLy8gQ3VzdG9tIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAppbmRleCAzNTQ4OWRjNDdhOGUwMTRlZjI0MjYyMzY0
MWNhMWVhN2FhNDc0MmY0Li4wOTk0MmY1ZWVkMDRmZDNiMWNmZmQxMzVkMmIxODI3OWExYTcwNmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3Vz
dG9tLmNwcApAQCAtMzcsMTQgKzM3LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdENoaWxkcmVuVmlydHVh
bChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisK
K3ZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTWFBhdGhSZXN1bHQqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU1hQYXRoUmVzdWx0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIGNvbnN0IFhQYXRoOjpWYWx1ZSYgeHBhdGhWYWx1ZSA9IGltcGwoKS0+dmFs
dWUoKTsKKyAgICBjb25zdCBYUGF0aDo6VmFsdWUmIHhwYXRoVmFsdWUgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPnZhbHVlKCk7CiAgICAgaWYgKHhwYXRoVmFsdWUuaXNOb2RlU2V0KCkpIHsKICAgICAg
ICAgY29uc3QgWFBhdGg6Ok5vZGVTZXQmIG5vZGVzVG9NYXJrID0geHBhdGhWYWx1ZS50b05vZGVT
ZXQoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2Rlc1RvTWFyay5zaXplKCk7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCAwOTUyOGQ1NmJjNTk5NTk2N2RiMWE0NzYxZDA1YjhhYWI3ZWZmZTli
Li41MjAzZmRmMGM0MDcxODg2YmVjYmQ0NjE4YzExYTZiYzhlOWQzZDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtODc3
LDcgKzg3Nyw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyB2aXNpdCBmdW5jdGlvbgog
ICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7XG5c
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpT
Qzo6U2xvdFZpc2l0b3ImKTtcblxuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpP
dmVycmlkZXNWaXNpdENoaWxkcmVuIn0gPSAxOwogICAgIH0KIApAQCAtMjIwMCwyMSArMjIwMSwy
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21NYXJrRnVuY3Rpb24ifSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcilcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NO
YW1lfTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8p
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdENoaWxkcmVu
KHRoaXMsIHZpc2l0b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFt
ZX06OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7XG4i
KTsKICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVu
dFRhcmdldCJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1w
bCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0LT5pbXBsKCktPnZpc2l0SlNFdmVu
dExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCRudW1DYWNoZWRBdHRyaWJ1dGVzID4gMCkgewogICAgICAgICAgICAgICAgIGZvcmVhY2ggKEB7
JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgICAgICAgICBteSAkYXR0cmli
dXRlID0gJF87CiAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG1fIiAuICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZSAuICIpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV8iIC4gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lIC4gIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5tXyIgLiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUgLiAiKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fIiAuICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGZjNjgzYTVk
Zjk0NTdmMTEyNmIyOTg3ZDlmZDE2MDVmNzBhMzExZjMuLjExOWI0OWUwNDA2OTJhMWQ4ZTM5MGNk
ZjEwZTMwODZkY2I3YTdhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xODcwLDE2ICsxODcwLDIyIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFz
c01ldGhvZFdpdGhPcHRpb25hbChFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCi12b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKK3ZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwor
ICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNUZXN0T2JqOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNUZXN0T2JqKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fY2FjaGVkQXR0cmlidXRlMSkKLSAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVkQXR0cmlidXRlMSk7Ci0gICAgaWYgKG1fY2Fj
aGVkQXR0cmlidXRlMikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVkQXR0cmlidXRl
Mik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRBdHRyaWJ1dGUxKQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRBdHRyaWJ1dGUxKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9jYWNoZWRBdHRyaWJ1dGUyKQorICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRBdHRyaWJ1dGUyKTsKIH0KIAogLy8gQ29uc3RhbnQg
Z2V0dGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCmluZGV4IDhkNTM0MTJlODY3NjM5NmM0ZTE2MjE1M2UxMmM3ZDNiOGU3NGRk
MWYuLmYyOWRjOGQ1OTIxMzhmMDNhMjg5YWRhMTYxZDVhZTg5MDc3ZjNkZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAg
LTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2NhY2hlZEF0dHJpYnV0ZTE7CiAgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2NhY2hlZEF0dHJpYnV0ZTI7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKIAogICAgIC8v
IEN1c3RvbSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cAppbmRleCA0YmJlNjVlMDExM2RiZmM5ODRkN2E1NDY0NDdkZGU2NWMwOTkyNmFhLi4yN2JmMWMx
NWU5NTQ4ZTEzMzU3NjgyMTdjZmI2NThjNDI3NjA1YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAgLTYyLDEwICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICBSdW50
aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgICAgICBRdEluc3RhbmNlKiBp
bnN0YW5jZSA9IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihnZXRJbnRlcm5hbEluc3RhbmNlKCkp
OworICAgICAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKKyAgICB7CisgICAgICAgIFF0UnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PFF0UnVudGltZU9iamVjdCo+KGNlbGwpOworICAgICAgICBSdW50aW1lT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgICAgICBRdEluc3RhbmNlKiBpbnN0
YW5jZSA9IHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPih0aGlzT2JqZWN0LT5nZXRJbnRlcm5hbElu
c3RhbmNlKCkpOwogICAgICAgICBpZiAoaW5zdGFuY2UpCiAgICAgICAgICAgICBpbnN0YW5jZS0+
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwCmluZGV4IDczZGQyYmY1NjJlZWYxMmYyMjFjNjYzMjYwODk3OTgzMzY4Mjhi
ZjAuLjk1ZWE4ZDkzNDdmNTI0NjI1ZGY0ZTY5MjU1ZjNmOTRkNWY0ZDU5MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTE0MzksMTAgKzE0MzksMTYgQEAgdm9p
ZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIGlkZW4KICAgICBkLT5tX2FsbG93UHJpdmF0ZSA9IGFsbG93UHJpdmF0
ZTsKIH0KIAotdm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNpdENoaWxkcmVuVmly
dHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBRdFJ1bnRpbWVNZXRob2Q6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgUVdfRChRdFJ1bnRpbWVNZXRhTWV0aG9kKTsKKyAgICB2
aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFF0UnVudGltZU1ldGFNZXRo
b2Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UXRSdW50
aW1lTWV0YU1ldGhvZCo+KGNlbGwpOworICAgIFF0UnVudGltZU1ldGhvZDo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSogZCA9
IHRoaXNPYmplY3QtPmRfZnVuYygpOwogICAgIGlmIChkLT5tX2Nvbm5lY3QpCiAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZkLT5tX2Nvbm5lY3QpOwogICAgIGlmIChkLT5tX2Rpc2Nvbm5lY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAppbmRleCA5MDZkMTA4ZTFlNzY5YjI1NzZh
YmUzZGQxMDZkNzQzNWI4YmYyODcwLi5kZTIxM2MyMDk4MTIzMWRhYWZmNmY2Y2JlZjcxYzkzNWQ1
YTdiMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKQEAgLTE2OCw3ICsx
NjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAg
ICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHByb3Rl
Y3RlZDoKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVy
biByZWludGVycHJldF9jYXN0PFF0UnVudGltZU1ldGFNZXRob2REYXRhKj4oZF9wdHIpO30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggZmY3YjZkN2ZiNTQ1M2ZjNzUz
YTYxMmMyMTRjMGNmMjk4YmI3M2Y2Zi4uOGFjMGVmNzBjYWVhYzJjMjBhOGFlMWQ3ZTA4N2I2MmQy
NWViODBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTE0NCw3
ICsxNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICAgICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciogd29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cigpIHsgcmV0dXJuIG1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlm
Ci0gICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBK
U1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKSBpbgorICAgICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250
ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpIGluCiAgICAgICAgIC8vIEpT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAuCiAgICAgICAgIFdvcmtlck5hdmlnYXRvciogb3B0aW9u
YWxOYXZpZ2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRvci5nZXQoKTsgfQogICAgICAg
ICBXb3JrZXJMb2NhdGlvbiogb3B0aW9uYWxMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YXRpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDUzZGIwZmJhMjVjZmU2
ZTk0MmJlMDk0YTgxNzBhODcwOThkM2NjNmEuLmU0MDRkNGE5ZDY4MDlkM2YwZGI3ODlkZDMyNDRk
ZmMwYmRmNjZiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
KysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNTYsNyArNTYsNyBAQCBf
Wk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOwog
X1pON1dlYkNvcmUyMWdldENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQS04zSlNDOUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkVQTlNfN0VsZW1lbnRFajsKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIx
MG1hcmtlcnNGb3JFUE5TXzROb2RlRTsKLV9aTjdXZWJDb3JlNkpTTm9kZTEzdmlzaXRDaGlsZHJl
bkVSTjNKU0MxMVNsb3RWaXNpdG9yRTsKK19aTjdXZWJDb3JlNkpTTm9kZTIwdmlzaXRDaGlsZHJl
blZpcnR1YWxFUk4zSlNDMTFTbG90VmlzaXRvckUKIF9aTjdXZWJDb3JlNkpTTm9kZTNwdXRFUE4z
SlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQ
cm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0U7CiBfWk43V2ViQ29yZTZ0
b05vZGVFTjNKU0M3SlNWYWx1ZUU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108482</attachid>
            <date>2011-09-23 09:06:01 -0700</date>
            <delta_ts>2011-09-23 10:39:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68404-20110923090600.patch</filename>
            <type>text/plain</type>
            <size>121038</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU4MDYKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzNjhiZjQ5ZTkwNjY3YzQ1OTA2MWEzMjE3NmJhYmYyZjNkM2U1NDQyLi40ZTJk
NzhiNTU0NTI0ODhhM2ZjMTRlYWEwMTgwM2IxZWVkYThlMTQ4IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjMgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3RhdGljIHZl
cnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVzdCBleHRyYWN0IHRoZSBi
b2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2RzCisgICAgICAgIHRocm91
Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0IGludG8gc3RhdGljIG1l
dGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9tIHRoZSB2aXJ0dWFsIG1l
dGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRyeWluZyB0byAKKyAgICAg
ICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4gaW50byBvdXIgb3duIGN1
c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8uICBXZSBuZWVkIHRvIGNv
bnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3JkZXIgdG8gYmUgCisgICAg
ICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRvIHRoZW0gaW4gb3VyIGN1
c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIgbWV0aG9kcyBzdG9yZSBz
b21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBtYWtpbmcgaXQgCisgICAg
ICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBpbiBDbGFzc0luZm8uCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA5LTIx
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIENy
YXNoIGluIFJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzIHdoZW4gR3JhcGhpY3NDb250ZXh0J3Mg
cGFpbnRpbmcgaXMgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKaW5kZXggNGI3YTQyYmE1MGYwZjllNGE2NGY3OWNhOGM0MmVhMzZkODEwNTk2
My4uMWRlZmI0ZTVlNTZlMWY1Y2Q1NTM4OTdmYTRiYjU4NTUzNTllNTA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5NiwxMyArMTk2LDE5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
Q29uc3RydWN0RGF0YSYpOwogICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoKHN0YXRp
Y19jYXN0PFBhcmVudCo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c19pbmZv
KTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCisgICAgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOworICAgICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKChzdGF0aWNfY2FzdDxQYXJlbnQqPih0aGlzT2JqZWN0KSksICZKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnNfaW5mbyk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgICAgIEFTU0VSVChQYXJlbnQ6OnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgICAgIFBhcmVudDo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5QYXJlbnQ6OnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgICAg
IFBhcmVudDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdGhp
c09iamVjdC0+bV9jYWxsYmFja09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAg
ICAgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZjMzZjY1NDkwOGVkOTMxNWZkYmY1MzE5YjlkMzYyODU4MWViOTQ1Yi4uNmEyNzU2NGY0
YTUxODBhNGFlN2NhYmJkODNjY2I4M2YxMzQzMjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA4IEBACisyMDExLTA5LTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpTQ2VsbDo6
dmlzaXRDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0
dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAgICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwg
aW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRvIHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUg
CisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUgdmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBh
biBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcgdG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1
YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8gb3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3Jl
ZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2UgbmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2Rz
IHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRvIGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUg
ZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVtIGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNl
IG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhvZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZv
cm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5nIGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRv
IHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xhc3NJbmZvLgorCisgICAgICAgICogQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXZhbEV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjp2aXNp
dENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5EaXJlY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpK
U1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFw
cGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlblZp
cnR1YWwpOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVj
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9TY29wZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp2aXNpdENo
aWxkcmVuVmlydHVhbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKwogMjAxMS0wOS0yMiAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdldFNjb3BlZFZhciBzaG91
bGQgaGF2ZSB2YWx1ZSBwcm9maWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCmluZGV4IGY5ZWY1Mjc1MjMyY2UwOGE4NmJiNGVkY2ZlOGI0MzE3NDkzOWI3OTguLjA0
YzUzZmIwYTVmNzFiMjFhZGIzY2FjMDRmOWE2MzMwOWU3YzVkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTYyLDEwICsxNjIsMTEgQEAgX19aTjNKU0Mx
M1N0YXRlbWVudE5vZGU2c2V0TG9jRWlpCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMGdsb2Jh
bEV4ZWNFdgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzlFeGVj
U3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEVqCiBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQ
TlNfOEpTT2JqZWN0RWoKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzdmlzaXRDaGlsZHJlbkVS
TlNfMTFTbG90VmlzaXRvckUKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzdmlzaXRDaGlsZHJl
bkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDE2YWRkU3RhdGljR2xvYmFsc0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJbmZvRWkKIF9fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFTlNfN0pTVmFsdWVFagogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MThnZXRP
d25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJv
cGVydHlTbG90RQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjB2aXNpdENoaWxkcmVuVmlydHVh
bEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDI0Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFBy
b3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDNwdXRFUE5TXzlFeGVj
U3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90
RSAgCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0aW5pdEVQTlNfOEpTT2JqZWN0RQpAQCAtMTc5
LDcgKzE4MCw2IEBAIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlkVGltZU91dEVQTlNfOUV4
ZWNTdGF0ZUUKIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CiBfX1pOM0pTQzE0VlRh
YmxlU3BlY3RydW01Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JF
UE5TXzlFeGVjU3RhdGVFCi1fX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0MTN2aXNpdENoaWxkcmVu
RVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2Uk5TXzExU2xvdFZp
c2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyOGZpbmFsaXplRU5TXzZIYW5kbGVJTlNf
N1Vua25vd25FRUVQdgogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lckQyRXYKQEAgLTI3NSwxMSAr
Mjc1LDExIEBAIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2UmVn
RXhwNW1hdGNoRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRWlQTjNXVEY2VmVjdG9y
SWlMbTMyRUVFCiBfX1pOM0pTQzZSZWdFeHA2Y3JlYXRlRVJOU18xMkpTR2xvYmFsRGF0YUVSS05T
XzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NFCiBfX1pOM0pTQzZSZWdFeHBEMUV2Ci1fX1pOM0pT
QzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M3SlNB
cnJheTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M3SlNBcnJh
eTE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfN0FyZ0xpc3RFCiBfX1pO
M0pTQzdKU0FycmF5MTVzZXRTdWJjbGFzc0RhdGFFUHYKIF9fWk4zSlNDN0pTQXJyYXkxOGdldE93
blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90RQorX19aTjNK
U0M3SlNBcnJheTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pO
M0pTQzdKU0FycmF5NnNfaW5mb0UKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3RoRWoKIF9fWk4z
SlNDN0pTQXJyYXlDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFCkBAIC0zMDgs
NyArMzA4LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxMmRlZmluZUdldHRlckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfagogX19aTjNKU0M4SlNPYmplY3QxMmRlZmluZVNldHRl
ckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfagogX19aTjNKU0M4SlNPYmpl
Y3QxMmxvb2t1cEdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4z
SlNDOEpTT2JqZWN0MTJsb29rdXBTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFCi1fX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVSTlNfMTFTbG90VmlzaXRvckUK
K19fWk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RW
aXNpdG9yRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBO
U185RXhlY1N0YXRlRWoKIF9fWk4zSlNDOEpTT2JqZWN0MTV1bndyYXBwZWRPYmplY3RFdgpAQCAt
MzI0LDYgKzMyNCw3IEBAIF9fWk4zSlNDOEpTT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQTlNf
OUV4ZWNTdGF0ZUVqTlNfN0pTVmFsdWVFagogX19aTjNKU0M4SlNPYmplY3QxOGdldE93blByb3Bl
cnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4SlNP
YmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNTdGF0ZUVSZFJOU183SlNWYWx1ZUUK
IF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJO
U18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQorX19aTjNKU0M4SlNP
YmplY3QyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0M4
SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhKU09iamVjdDIyZmls
bEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5TXzE2V3JpdGVCYXJyaWVy
QmFzZUlOU183VW5rbm93bkVFRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlT
dG9yYWdlRVJOU18xMkpTR2xvYmFsRGF0YUVtbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBkNTFmMmIwOGI1YjUxZWViYTFmZGEw
Y2QyYjRmY2ZiNzc4NzZiNjhkLi5iMWZlMzUyM2Y5MTI2ZDkzN2I0MmRkMDcwYzA1MzIxNWYyZDcx
MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgpAQCAtMzc2LDExICszNzYsMTIgQEAgRVhQT1JUUwogICAgID91bndyYXBwZWRPYmpl
Y3RASlNPYmplY3RASlNDQEBVQUVQQVYxMkBYWgogICAgID91dGY4QFVTdHJpbmdASlNDQEBRQkU/
QVZDU3RyaW5nQFdURkBAX05AWgogICAgID92YWxpZGF0ZVZhbHVlQE1hcmtTdGFja0BKU0NAQEtB
WFZKU1ZhbHVlQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBKU0dsb2JhbE9iamVjdEBKU0NAQFVB
RVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5ASlNPYmplY3RASlNDQEBV
QUVYQUFWU2xvdFZpc2l0b3JAMkBAWgotICAgID92aXNpdENoaWxkcmVuQEpTV3JhcHBlck9iamVj
dEBKU0NAQEVBRVhBQVZTbG90VmlzaXRvckAyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5AU2NvcGVD
aGFpbk5vZGVASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID92dGFibGVBbmNob3JA
SW50ZXJuYWxGdW5jdGlvbkBKU0NAQEVBRVhYWgorICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFs
T2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgorICAgID92aXNp
dENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBA
WgorICAgID92aXNpdENoaWxkcmVuVmlydHVhbEBKU0dsb2JhbE9iamVjdEBKU0NAQFVBRVhBQVZT
bG90VmlzaXRvckAyQEBaCisgICAgP3Zpc2l0Q2hpbGRyZW5WaXJ0dWFsQEpTT2JqZWN0QEpTQ0BA
VUFFWEFBVlNsb3RWaXNpdG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJlblZpcnR1YWxAU2NvcGVD
aGFpbk5vZGVASlNDQEBVQUVYQUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID93YWl0QFRocmVhZENv
bmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCiAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0
aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICA/d3JpdGFibGVAUHJvcGVydHlEZXNjcmlwdG9yQEpT
Q0BAUUJFX05YWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCBhZjZhNTZmOWJlMmE2MDQ3ODJjODUwYzMxZWY1OWQy
ZjQwY2RmNTBjLi5lZjk3YjBmYzU5YjQ0NWZlODM0OGQzZGY0OTAyZTBkZGUyYmQ0YzViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmNwcApAQCAtNDMsMTUgKzQzLDIxIEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBhY3RpCiAgICAg
bV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdGF0aWNfY2FzdDxKU0FjdGl2YXRp
b24qPihhY3RpdmF0aW9uKSk7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBEZWJ1Z2dlckFjdGl2
YXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwog
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAg
SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAo
bV9hY3RpdmF0aW9uKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9hY3RpdmF0aW9uKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9hY3RpdmF0aW9uKTsKIH0KIAogVVN0cmluZyBEZWJ1Z2dlckFjdGl2YXRp
b246OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggY2NkYmRlOGY2Y2I0MGFiNzE5ZDU0ODZh
MGE0ODU0ZTcwOGZhOWY3Mi4uYjBjMjBjMmNjOTM5ZmQ5YmMxNzRkODUyN2Y4MGQ3ODBmYWEyNjdh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0
aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFj
dGl2YXRpb24uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBhY3RpdmF0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCBVU3RyaW5nIGNs
YXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IGZkNjY4YmQ5ZWRiNjk4MTFjYmEzOTdl
YTc4ZGNiNzEyOTVkYzUyOWQuLmMzOWM1N2ZjNGRkZDMwMjYzYzcwNzE1NDBlNTA4ZGNhYTEwZDhm
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcApAQCAtNTksNyAr
NTksNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwpCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwogICAgIGlmIChjZWxsLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKLSAgICAgICAg
Y2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAgICAgSlNDZWxsOjp2aXNp
dENoaWxkcmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzAs
NyArNzAsNyBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwpCiAjZWxzZQogICAgICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uKTsKICAgICAgICAgbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24g
PSB0cnVlOwotICAgICAgICBjZWxsLT52aXNpdENoaWxkcmVuKCp0aGlzKTsKKyAgICAgICAgY2Vs
bC0+dmlzaXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogICAgICAgICBBU1NFUlQobV9pc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCkBAIC04MCw3ICs4MCw3IEBAIGlubGlu
ZSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCkKICAgICAgICAg
YXNBcnJheShjZWxsKS0+dmlzaXRDaGlsZHJlbkRpcmVjdCgqdGhpcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgY2VsbC0+dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgY2VsbC0+dmlz
aXRDaGlsZHJlblZpcnR1YWwoKnRoaXMpOwogfQogCiB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigp
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogI2lmIEVOQUJM
RShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCiAgICAgICAgICAgICAgICAgbV92aXNpdGVkVHlwZUNv
dW50cy5jb3VudChjZWxsKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNlbGwtPkpTQ2VsbDo6
dmlzaXRDaGlsZHJlbigqdGhpcyk7CisgICAgICAgICAgICAgICAgSlNDZWxsOjp2aXNpdENoaWxk
cmVuKGNlbGwsICp0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5tX3ZhbHVlcyA9
PSBlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5yZW1vdmVMYXN0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggZWM2Y2M4ZjFjNzIwN2RhODNhZjE1MTQyNmI5ZjU4MWIx
OTg0NmM0OS4uYmVmMzBkOGJiMzE4ZTJlYmU2ZmQ0YzM0YzQ2ODlkZjU5MTYzMmU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC00MywyNSArNDMs
MzEgQEAgQXJndW1lbnRzOjp+QXJndW1lbnRzKCkKICAgICAgICAgZGVsZXRlIFtdIGQtPmV4dHJh
QXJndW1lbnRzOwogfQogCi12b2lkIEFyZ3VtZW50czo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3ZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZz
X2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgQXJn
dW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8QXJndW1lbnRzKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAg
aWYgKGQtPnJlZ2lzdGVyQXJyYXkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGQtPnJl
Z2lzdGVyQXJyYXkuZ2V0KCksIGQtPm51bVBhcmFtZXRlcnMpOworICAgIGlmICh0aGlzT2JqZWN0
LT5kLT5yZWdpc3RlckFycmF5KQorICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2Jq
ZWN0LT5kLT5yZWdpc3RlckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5kLT5udW1QYXJhbWV0ZXJz
KTsKIAotICAgIGlmIChkLT5leHRyYUFyZ3VtZW50cykgewotICAgICAgICB1bnNpZ25lZCBudW1F
eHRyYUFyZ3VtZW50cyA9IGQtPm51bUFyZ3VtZW50cyAtIGQtPm51bVBhcmFtZXRlcnM7Ci0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGQtPmV4dHJhQXJndW1lbnRzLCBudW1FeHRyYUFyZ3Vt
ZW50cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPmQtPmV4dHJhQXJndW1lbnRzKSB7CisgICAgICAg
IHVuc2lnbmVkIG51bUV4dHJhQXJndW1lbnRzID0gdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRz
IC0gdGhpc09iamVjdC0+ZC0+bnVtUGFyYW1ldGVyczsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXModGhpc09iamVjdC0+ZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4dHJhQXJndW1lbnRzKTsK
ICAgICB9CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmZC0+Y2FsbGVlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+ZC0+Y2FsbGVlKTsKIAotICAgIGlmIChkLT5hY3RpdmF0aW9uKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+YWN0aXZhdGlvbik7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPmQtPmFjdGl2YXRpb24pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5k
LT5hY3RpdmF0aW9uKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OmNvcHlUb1JlZ2lzdGVycyhFeGVj
U3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1heFNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDU2MTEzZGZhNjFkMDkyMjVk
MWNiYzE5YzM5Y2YzMmExNDMyM2I2NzIuLjVlMjMwNzQ2ZGMzY2NlMTNiMzBmNTE2YWQ1MjI2Nzli
NWFmOTk5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBA
IC05MCw3ICs5MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCBmaWxsQXJnTGlzdChFeGVjU3RhdGUqLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCmluZGV4IDdmYjY5NDIwODVmZDJlMzQ2NjU0N2FkYjBhNTNiZjY5ZjM5
ZTQzZjYuLjJjMzE3YzkwYTQ5YTY5MGViNGNkYTFmNmI0ZDAxNTgwMjg5ZjdjMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yMzQsMTQgKzIz
NCwyMCBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjpqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQogfQogI2VuZGlmCiAKLXZvaWQgRXZhbEV4ZWN1dGFibGU6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEV2YWxFeGVjdXRhYmxlOjp2
aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBFdmFsRXhlY3V0YWJsZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fZXZhbENvZGVCbG9jaykK
LSAgICAgICAgbV9ldmFsQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2V2YWxDb2RlQmxvY2spCisgICAg
ICAgIHRoaXNPYmplY3QtPm1fZXZhbENvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7
CiB9CiAKIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKQEAgLTM3MiwxNCArMzc4
LDIwIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKICNlbmRpZgogfQog
Ci12b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAm
c19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFBy
b2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxk
cmVuKHZpc2l0b3IpOwotICAgIGlmIChtX3Byb2dyYW1Db2RlQmxvY2spCi0gICAgICAgIG1fcHJv
Z3JhbUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0aGlz
T2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQog
CiB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQpAQCAtNTg0LDE4ICs1OTYsMjQg
QEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0
cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbEQKIH0KICNlbmRpZgogCi12b2lkIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Cisg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0Zs
YWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOwotICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
Ci0gICAgaWYgKG1fbmFtZVZhbHVlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9uYW1lVmFs
dWUpOwotICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgIG1fY29kZUJsb2NrRm9y
Q2FsbC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci0gICAgaWYgKG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0KQotICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9uYW1l
VmFsdWUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVWYWx1ZSk7
CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICAgICAgdGhpc09i
amVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICBp
ZiAodGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisgICAgICAgIHRoaXNPYmpl
Y3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0K
IAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRpc2NhcmRDb2RlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAwM2Y3ZTAyNjBmNThkNmM1ODlhOTJj
YTIyMjNiZjM1MjY0MGUyMWUzLi4xNTMwOGJmNjc4MGIzMWYxMWEzZjVlNTY1ZDZiMmM1MDJkMmZh
Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0z
NTYsNyArMzU2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKEV4
ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sKTsKIAogICAgICAgICBKU09iamVjdCog
Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgSklUQ29kZTo6SklU
VHlwZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYp
OworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAgICAgICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKIAogICAgICAgICBPd25QdHI8RXZhbENv
ZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwpAQCAtNDIxLDcgKzQyMiw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VD
b2RlJik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5cGUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICB2b2lkIHVubGlua0NhbGxz
KCk7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9j
azsKQEAgLTU4MCw3ICs1ODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hhcmVkU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJsZTsgfQog
CiAgICAgICAgIHZvaWQgZGlzY2FyZENvZGUoKTsKLSAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFs
Q29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA5OTAyYjc2OGYyNjg2
NjliODlhYjZlM2RiZTJiNzQyMWMxZTE5NjM0Li45MTc5NTM0ODBlNTA0NzQ3YWI0ZDA2NWM5NjQ1
YzdmZmU4MDljYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5jcHAKQEAgLTMwLDE2ICszMCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3Qg
Q2xhc3NJbmZvIEdldHRlclNldHRlcjo6c19pbmZvID0geyAiR2V0dGVyU2V0dGVyIiwgMCwgMCwg
MCB9OwogCi12b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKK3ZvaWQgR2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2lu
Zm8pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOwotICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLQotICAgIGlm
IChtX2dldHRlcikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZ2V0dGVyKTsKLSAgICBpZiAo
bV9zZXR0ZXIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3NldHRlcik7CisgICAgdmlzaXRD
aGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZXR0ZXJT
ZXR0ZXIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxHZXR0ZXJTZXR0ZXIqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2dldHRlcikKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZ2V0dGVyKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9zZXR0ZXIp
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NldHRlcik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaAppbmRleCAxOWNkYmRkYjAxMmFhMjQ5NWE2NDJkYjBmMDI0OGU3MjZiYjUxOGZmLi5h
MzEyZjczMGRkMzVmYzBiZWVjMzhkMzcwNzEyNWMzMDMyMWFhYzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtNTMsNyArNTMsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZXR0ZXJTZXR0ZXI7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRlci5nZXQo
KTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
T2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGdldHRlcik7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmlu
ZGV4IGRiYzk2N2UwMzY3NmZhNzI0MDNlZWY2OTVkNTQ5NzFjOGZiZDg4NWUuLmE2MWQzNzFmY2U3
NTFiYzMxMWVkZDUyN2E4OTdlMmZhMzFkN2JjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNjMsMjIgKzYzLDI4IEBAIEpTQWN0aXZh
dGlvbjo6fkpTQWN0aXZhdGlvbigpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkU3ltYm9sVGFibGUq
PihtX3N5bWJvbFRhYmxlKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKICAgICAvLyBObyBuZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBp
ZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZpbGUuCi0gICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiByZWdpc3RlckFycmF5ID0gbV9yZWdpc3RlckFycmF5LmdldCgpOworICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJB
cnJheS5nZXQoKTsKICAgICBpZiAoIXJlZ2lzdGVyQXJyYXkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIG1fbnVtUGFyYW1ldGVyc01p
bnVzVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSwgdGhpc09i
amVjdC0+bV9udW1QYXJhbWV0ZXJzTWludXNUaGlzKTsKIAogICAgIC8vIFNraXAgdGhlIGNhbGwg
ZnJhbWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0aGUgcGFyYW1ldGVycyBhbmQgdmFycy4KLSAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgbV9udW1QYXJhbWV0ZXJzTWludXNU
aGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBtX251bUNhcHR1cmVkVmFy
cyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSArIHRoaXNPYmplY3Qt
Pm1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSwgdGhpc09iamVjdC0+bV9udW1DYXB0dXJlZFZhcnMpOwogfQogCiBpbmxpbmUgYm9vbCBK
U0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uaAppbmRleCBkODYzNTkzYjMyYjE4MDRiNjE2ZTdiYTViYzhiZjFjYzVhNmE1
ZjlhLi45OTEwOTc2ZDM0Zjk4ZGJkY2FkZjk4NDJlYzE4MDI3NTM1ZWZiYzUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApAQCAtNTUsNyArNTUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIH5KU0FjdGl2YXRpb24oKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWND
aGVja3MpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CmluZGV4IGQ3YmU5NDZjMGM3MjZiOWNiZmYzZWRjOTRjN2U0MWFhMDk0ZGMzZTIuLjQ1ZGJkODk5
NTU0NzhkZGU3YTIyMTc3YTg5NjI4MjI3OTM0NjYwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC04NzEsMTIgKzg3MSwxOCBAQCB2b2lkIEpTQXJyYXk6
OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBjb3VudCkKICAgICAgICAgdmVjdG9y
W2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3ZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19p
bmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQXJy
YXk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBcnJheSo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICB2aXNp
dENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIHRoaXNPYmpl
Y3QtPnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFy
ZU51bWJlcnNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDU2NjIyMjVlNTdjZDE5NzUzY2QyOTQ2
ZTFiNjJmNTcyNmMwNmRiNDcuLmU4ZmU3ODk1MDI4ZGY5MzcyOWEzMDM0NmYwMGRjY2Y1ZmY1OTll
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE3Miw3ICsx
NzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3Bl
cnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChT
bG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IGVhOWIwYjMxMjdhNmYz
NmM4ZDI4NGZjMTlhZTU1ZTY0NWM3MTFmY2EuLmJiYzliZDkzM2Y0Mjc5MjBmNzY0M2EzYTVlMzVj
M2ExZmUyMmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmNwcApAQCAtMTQwLDE2ICsxNDAsMjIgQEAgdm9pZCBKU0JvdW5kRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWIKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lkIEpTQm91bmRG
dW5jdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNCb3Vu
ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0
Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNCb3VuZEZ1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNC
b3VuZEZ1bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3RhcmdldEZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9ib3VuZFRo
aXMpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZtX2JvdW5kQXJncyk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fdGFyZ2V0RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fYm91bmRBcmdzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IDAyODE3MmMyMzhlZTdh
NDFkZWFjOWU4N2YwNDVkM2Q0MGFjOTdmOGQuLjUyNTBlOTA1NDU5YTk4MzA3ZjI0Y2UxOTA3ODg1
NzVkY2U4Zjc2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5oCkBAIC01Nyw3ICs1Nyw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBj
b25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNIYXNJbnN0YW5j
ZSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAKIHByaXZhdGU6CiAgICAgSlNCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBK
U1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAppbmRleCA2ZGY1Yjk4NzkyZmI1MTU5ZTJlOGJiZGE1YWQzMGVjMThl
MjkzNzdjLi45ZWU1MjJmMGNlOGUyYjY1YWZjMmU1MjlmZmE5MGNlNWE0NWNlYWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtODQsNyArODQsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVh
bChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGgg
dGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KICAgICAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8oKSBjb25zdDsKQEAgLTE3Niw5ICsxNzcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKLSAgICBpbmxpbmUg
dm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgaW5s
aW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgICAg
IHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQg
SlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CisgICAgeworICAgICAgICBKU0NlbGwqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NlbGwq
PihjZWxsKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RydWN0dXJl
KTsKICAgICB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKaW5kZXggMmUwYmQwMmViYWZkMTA5ZmM0NTBlNmRlZmYyYzkwYzlhODRiOTM4ZS4uMzdmNjZj
MTgyYzU1ZDEzYTA0NjczNmVmMmMxNTY0ZWI2OTRkODk5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTE1MSwxNiArMTUxLDIyIEBAIGNvbnN0
IFVTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gbmFtZShleGVjKTsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxk
cmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRv
cik7Cit9CisKK3ZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZtX3Njb3BlQ2hhaW4pOwotICAgIGlmIChtX2V4
ZWN1dGFibGUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2V4ZWN1dGFibGUpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlQ2hhaW4pOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2V4ZWN1dGFibGUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2V4ZWN1dGFibGUpOwogfQogCiBDYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShDYWxs
RGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKaW5kZXggZWYwZGQ3N2RiNTU5NDFkYzc5ZjI5YWI5M2ZiNWNmN2Y1YjZjY2ExZi4uYTVkMDNk
ZGI5YjNmNWJiYTY2MWYzMTJiOTQxYjA4ODJjNmU3ODU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTM0LDcgKzEzNCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgSlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNr
VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggNDE3ZjVhN2U5ZTI2ZDRiZTNiNzNiMGM5N2M5N2IwYTk3MDMzMGZlZS4uMzNk
N2JjOTI2MzIzNzJiY2RhNWNkNjZlMTUyYzUzYjE5ZGJiZGYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA4LDY2ICszMDgs
NzIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgb2xkTGFzdEluUHJvdG90eXBl
Q2hhaW4tPnNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmplY3RQcm90b3R5cGUpOwogfQogCi12
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
IAorICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7
Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7Ci0gICAgSlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLQot
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZ2xvYmFsU2NvcGVDaGFpbik7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9tZXRob2RDYWxsRHVtbXkpOwotCi0gICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9lcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZtX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZt
X3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9y
ZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZt
X3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
dHlwZUVycm9yQ29uc3RydWN0b3IpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fVVJJ
RXJyb3JDb25zdHJ1Y3Rvcik7Ci0KLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2V2YWxG
dW5jdGlvbik7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsRnVuY3Rpb24pOwot
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXBwbHlGdW5jdGlvbik7Ci0KLSAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX29iamVjdFByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9hcnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9i
b29sZWFuUHJvdG90eXBlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3N0cmluZ1By
b3RvdHlwZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1iZXJQcm90b3R5cGUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZGF0ZVByb3RvdHlwZSk7Ci0gICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdFeHBQcm90b3R5cGUpOwotCi0gICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
Jm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fZGF0ZVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9l
bXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZt
X2Vycm9yU3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Z1bmN0aW9u
U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2JvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUpOwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKTsKLSAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cFN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZSk7Ci0KLSAgICBpZiAobV9yZWdpc3RlckFycmF5KSB7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
SlNWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZ2xvYmFsU2NvcGVDaGFp
bik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9tZXRob2RDYWxs
RHVtbXkpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdF
eHBDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+
bV9lcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2Jq
ZWN0LT5tX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3Is
ICZ0aGlzT2JqZWN0LT5tX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fdHlwZUVy
cm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0
aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9ib29sZWFuUHJvdG90eXBlKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3N0cmluZ1Byb3RvdHlwZSk7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9udW1iZXJQcm90b3R5cGUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fZGF0ZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBQcm90
b3R5cGUpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9hcmd1
bWVudHNTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fYXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmpl
Y3QtPm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tP
YmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1fZGF0ZVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAm
dGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX2JvdW5kRnVuY3Rpb25TdHJ1
Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fbmFtZWRG
dW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVj
dC0+bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlz
aXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUp
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZSk7CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5KSB7
CiAgICAgICAgIC8vIE91dHNpZGUgdGhlIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBv
dXIgdmFyaWFibGVzIGFyZSB0b3JuIG9mZiwKICAgICAgICAgLy8gd2UgY2FuIG1hcmsgdGhlIHRv
cm4tb2ZmIGFycmF5LgotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVyQXJy
YXkuZ2V0KCksIG1fcmVnaXN0ZXJBcnJheVNpemUpOwotICAgIH0gZWxzZSBpZiAobV9yZWdpc3Rl
cnMpIHsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9yZWdpc3Rl
ckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICB9IGVs
c2UgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJzKSB7CiAgICAgICAgIC8vIER1cmluZyBleGVj
dXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUgaW4gdGhlIHJlZ2lz
dGVyIGZpbGUsCiAgICAgICAgIC8vIHRoZSBzeW1ib2wgdGFibGUgdGVsbHMgdXMgaG93IG1hbnkg
dmFyaWFibGVzIHRoZXJlIGFyZSwgYW5kIHJlZ2lzdGVycwogICAgICAgICAvLyBwb2ludHMgdG8g
d2hlcmUgdGhleSBlbmQsIGFuZCB0aGUgcmVnaXN0ZXJzIHVzZWQgZm9yIGV4ZWN1dGlvbiBiZWdp
bi4KLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9yZWdpc3RlcnMgLSBzeW1ib2xUYWJs
ZSgpLnNpemUoKSwgc3ltYm9sVGFibGUoKS5zaXplKCkpOworICAgICAgICB2aXNpdG9yLmFwcGVu
ZFZhbHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVycyAtIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCkuc2l6ZSgpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLnNpemUoKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBjZWYzZWZlZDQzOWNlM2I1YWE0ZGY0YjE0ZTliNGNiZDNjOTBhNDAxLi4zZjBiODVkOTY5YjZj
MDE2YjZkOWE1ZjM1NzBiNjE1ZGJiMTNjZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE3NSw3ICsxNzUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKaW5kZXggNTIzNzIxY2RiYTA2YjVlM2Y0MGRkMzQzZTZjNzFlOWNkMzdkNDk2Ni4uOWM4MDFi
NmE0YTM2MzRkNDcyMTMwODk4Mjg1Nzk3ZWYyNmQ2MmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNjgsMTUgKzY4LDIxIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzCiAgICAgfQogfQogCi12b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlblZpcnR1YWwo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2
b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVj
dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFy
a1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247
CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNl
OwogI2VuZGlmCiAKLSAgICB2aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOworICAgIHRoaXNP
YmplY3QtPnZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCAwNTJiMTllMDFkNWQxN2NiMGI5OTNjNDk4MjRiNDYwMTg5MzVjMjI3
Li5lY2JkYzY4NDIyZDliMjAxODEzODA4MmNhZDhmYjM2M2NhNDE0NzIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTc5LDggKzc5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOwogICAgICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYpOworICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ICAgICAgICAgLy8gVGhlIGlubGluZSB2aXJ0dWFsIGRlc3RydWN0b3IgY2Fubm90IGJlIHRoZSBm
aXJzdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCiAgICAgICAgIC8vIGluIHRoZSBjbGFzcyBh
cyBpdCByZXN1bHRzIGluIHRoZSB2dGFibGUgYmVpbmcgZ2VuZXJhdGVkIGFzIGEgd2VhayBzeW1i
b2wKQEAgLTgxNiw3ICs4MTcsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwogCiAgICAgUHJvcGVydHlTdG9yYWdlIHN0
b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBzdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA0Yzdh
NmVlOTY3NDU4ZTkxNGE0NzMwZmRlNjRhM2FhNWU0NTEwOTU3Li5lYTQyZDc4ZjBhZDIzYzk1Yjgx
MzY2ZTgyOTBmNWEzMGM1YjMwOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtOTIsMTMgKzkyLDE5
IEBAIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi12
b2lkIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit2b2lkIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9qc1N0cmlu
Z3MuZ2V0KCksIG1fanNTdHJpbmdzU2l6ZSk7Ci0gICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4pCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKKyAg
ICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9qc1N0cmluZ3MuZ2V0KCksIHRoaXNPYmpl
Y3QtPm1fanNTdHJpbmdzU2l6ZSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4pCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZFBy
b3RvdHlwZUNoYWluKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXgg
YTcxOWRlMWNiOGYyNzE2YTc2YTI1ZTVjYTBjMjQ3ZTc3YTc2YWJhMS4uYzZmNjk3OTcyY2E3NTQ2
YjUyYTY0NmIzNzBjOWQwZmY1NzFjODU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtNTgsNyArNTgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAg
IGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNw
cAppbmRleCA1MjA2NTEwZDZjZDJhNzcyNGE3M2I1YmVkMTJhMWYyZDZkOGNjNzE2Li4zMWRhODBh
NzllY2Q2MDdlZTE5OTIyN2IwMmFlN2VkNGZkM2ViMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcApAQCAtMzIsMTMg
KzMyLDE5IEBACiBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNT
dGF0aWNTY29wZU9iamVjdCk7CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6dmlz
aXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworfQorCit2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1N0YXRpY1Njb3Bl
T2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7
CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NF
UlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAg
ICBKU1ZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3JlZ2lzdGVyU3RvcmUpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEpTVmFyaWFi
bGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnaXN0ZXJTdG9yZSk7CiB9CiAKIEpTT2JqZWN0KiBK
U1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5oCmluZGV4IDFmOGQ4YjhmZWYzZDhiYzNjMWUyYjViMjAwMTZiMmE1OWY1YzUyNmUuLjgyMTE3
OGE5YWZiODYzYzI2ZTdmZmNlYTZhMmE0ZTA4Y2I4ZWVkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKQEAgLTQxLDcgKzQx
LDggQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgICAgIHJldHVybiBzY29wZU9iamVjdDsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRv
ciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWlj
Q2hlY2tzKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2Jq
ZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKaW5kZXggOGQ2Mzg3ZWMwYWIyMGFkZjdhZmE1M2UxZjEw
ZmRhZDA0MzBmMDFlMi4uNjkxOTJmZTNjZDc4M2RmMTRlMDQ0NTQ5OTkyZGQ5NWRiZjllMDkyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
Y3BwCkBAIC0yNiwxNCArMjYsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoSlNXcmFwcGVyT2JqZWN0KTsKIAotdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAordm9pZCBKU1dyYXBwZXJPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSAKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNXcmFwcGVyT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEpTT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2ludGVybmFsVmFsdWUpCi0g
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2ludGVybmFsVmFsdWUpOworICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IGlmICh0aGlzT2JqZWN0LT5tX2ludGVybmFsVmFsdWUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsVmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5k
ZXggY2Y0NGUwNGU3ODVkMjRlNDlhMGI5YzU1NzJkNWUxNWMyYTdiNDkzNC4uOTU5NmFhNGUzMjBm
OTI2ZWNlN2YxZmFiNjg0M2VkNGY5YTExZDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAgLTQ1LDcgKzQ1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChTbG90
VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAgICAgICAgIAogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9p
bnRlcm5hbFZhbHVlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGExMDNjMzc2MTM2MmMy
NTNiNmNlMjhkYTFmMmMwMmE2MWFmNmNkZjcuLmU1ODFkYTlmNDQ5Y2YzOTI0Mzk4NTFhODA2YmUx
OTljNTU1OTQwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zNywxNCArMzcsMjAgQEAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHIKIHsKIH0KIAotdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOwotICAgIEludGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7Ci0gICAgaWYgKG1fZXJyb3JTdHJ1Y3R1cmUpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBJbnRlcm5hbEZ1bmN0
aW9uOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2Vycm9yU3RydWN0dXJlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9lcnJvclN0cnVjdHVyZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaAppbmRleCBjYzQ2MzViNTBlMDg1NjllZTBkOTVjZjFhODAwNTJkZjk3MGFj
NTAxLi44YzI3MmVhYTJhODY0YzA4MGExZDIxNGRjZjNlYjc2ZjhiZTBhM2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCkBAIC03MCw3ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSW50
ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IGJhZTkwODYxZWE1MzU5MDZiOWVhNTY1
YWM3YWQyYzM0NGMxZTZjNWYuLjEyM2RkNmU5YTE2ZmY2OTJmNmIyNzQ3YmQyMGZkYjJmNzIwZDQx
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cApAQCAtNzgsMTYgKzc4LDIyIEBAIFJlZ0V4cE9iamVjdDo6flJlZ0V4cE9iamVjdCgpCiB7CiB9
CiAKLXZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQordm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7
CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBSZWdFeHBPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxSZWdFeHBPYmplY3Qq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAoZC0+cmVnRXhwKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+cmVnRXhwKTsKLSAgICBpZiAoVU5MSUtFTFkoIWQt
Pmxhc3RJbmRleC5nZXQoKS5pc0ludDMyKCkpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+
bGFzdEluZGV4KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIGlmICh0aGlzT2JqZWN0LT5kLT5yZWdFeHApCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5kLT5yZWdFeHApOworICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdC0+ZC0+bGFzdEluZGV4LmdldCgpLmlzSW50MzIoKSkpCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5kLT5sYXN0SW5kZXgpOwogfQogCiBib29sIFJl
Z0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGM5ZmIwMGJmMDkwODNjMmU5
MTU3ODRjYTczZTI2MTVhNGU1MmU3MzAuLjExZTAxOTVlYTk4NTY1Y2E3MTE5ZDA3YTQxNjNmMjNl
MDMzNGRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCkBAIC04Miw3ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgICAgIGJvb2wgbWF0Y2goRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKaW5kZXggZGY0ZGE0MWMwMjEzOTQyNzA2
NTRjMDUxYzZmN2M4ZTUyODg1ZWM2NS4uMTNiNzlkOWIwZGY3OWZjMTE1OTg4NDk1NjQ3OTdlMDJl
ODQ3MzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5j
cHAKQEAgLTY3LDE2ICs2NywyMiBAQCBpbnQgU2NvcGVDaGFpbk5vZGU6OmxvY2FsRGVwdGgoKQog
ICAgIHJldHVybiBzY29wZURlcHRoOwogfQogCi12b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBTY29wZUNoYWluTm9kZTo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxTY29wZUNoYWluTm9kZSo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBpZiAobmV4dCkKLSAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm5leHQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZvYmplY3QpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKCZnbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZn
bG9iYWxUaGlzKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBpZiAodGhpc09iamVjdC0+bmV4dCkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm5leHQpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5vYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5nbG9i
YWxUaGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggZGQ1MDA0YjUwMGE4MmNhYzRlZWFmMmJiYzU3NWI3
OGZkODQ3ZGY0YS4uYWM1MmM2NzdiYjU0MTk2N2I0MDA2OTA2YzNmNGM3NWZlZmVhNDgzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApAQCAtODcsNyArODcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ29tcG91
bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYpOworICAgICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHN0YXRpYyBKU19FWFBP
UlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMzEzYTg1MTg3MTRkNmM1
ZmJhMzU3YjllMzllZDNlZjYyZmM5NGI2Yy4uNGVkZGU5ZjRiZWE5ZWZkOTA1NWNmMjA2MjI1YTkx
ODIzMGEwYWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCkBAIC03MjQsMjYgKzcyNCwzMiBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1l
cyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZUFycmF5JiBwcgogICAgIH0K
IH0KIAotdm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Ci17Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fZ2xvYmFsT2Jq
ZWN0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwotICAgIGlmICht
X3Byb3RvdHlwZSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fcHJvdG90eXBlKTsKLSAgICBp
ZiAobV9jYWNoZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4pOwotICAgIGlmIChtX3ByZXZpb3VzKQotICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9wcmV2aW91cyk7Ci0gICAgaWYgKG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAg
ICBpZiAobV9lbnVtZXJhdGlvbkNhY2hlKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9lbnVt
ZXJhdGlvbkNhY2hlKTsKLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7Ci0gICAgICAgIFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7Ci0gICAgICAg
IGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgcHRyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdp
bigpOyBwdHIgIT0gZW5kOyArK3B0cikgewordm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW5W
aXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywg
dmlzaXRvcik7Cit9CisKK3ZvaWQgU3RydWN0dXJlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgU3RydWN0dXJlKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3Qt
Pm1fZ2xvYmFsT2JqZWN0KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9n
bG9iYWxPYmplY3QpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3Byb3RvdHlwZSkKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvdG90eXBlKTsKKyAgICBpZiAodGhpc09i
amVjdC0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbikKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIGlmICh0aGlzT2JqZWN0LT5t
X3ByZXZpb3VzKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcmV2aW91
cyk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9lbnVtZXJhdGlvbkNhY2hlKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lbnVtZXJhdGlvbkNhY2hlKTsKKyAgICBpZiAodGhp
c09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJh
dG9yIGVuZCA9IHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CisgICAgICAgIGZv
ciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9wcm9wZXJ0eVRh
YmxlLT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgaWYgKHB0ci0+
c3BlY2lmaWNWYWx1ZSkKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT5zcGVj
aWZpY1ZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAppbmRleCBkNjA3MzdlNWRmYjIzODAwMGY4ZWE5ZDFlY2M1ZDA2ZTg4MWQ3NTRkLi45
NThhZDFiNzViOGZlNTdiYmI1NmZkZThiYjgzOGY1ZWIyZGY2NjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTMwLDcgKzEzMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3Vw
KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hh
aW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYpOworICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7
CisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IEFTU0VSVChzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3ByZXZpb3VzLmdldCgp
OyB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZVRvRmluZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggM2UwZjAyOGViNzA3YzdlMTE3MTFlODBhZTg0ZjkyOTg4
MzkwOGExNC4uMGZiMjhkZTVmZTdhNmI0MGZiY2VjNjVlNzU0ODM0MTlmMGZjMzZiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcApAQCAt
NDMsMTMgKzQzLDE5IEBAIFN0cnVjdHVyZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4oKQogewogfQog
Ci12b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQordm9pZCBTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIFN0
cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgU3RydWN0dXJlQ2hhaW4qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxT
dHJ1Y3R1cmVDaGFpbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgJnNfaW5mbyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CiAgICAgc2l6ZV90IGkgPSAwOwot
ICAgIHdoaWxlIChtX3ZlY3RvcltpXSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fdmVjdG9y
W2krK10pOworICAgIHdoaWxlICh0aGlzT2JqZWN0LT5tX3ZlY3RvcltpXSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdmVjdG9yW2krK10pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCmluZGV4IGNkZDY0ZWY2YTYxYWU0MTQ0MDMzYjA3ZmMxZWMxOTI3MDMxYWRkMGIuLjE5MGM1
YzJmNGU0NDdlY2MyMDkxODJkYWVkODQ1ZTUwZjE5Zjk4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNTIsNyArNTIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBjaGFpbjsKICAgICAgICAgfQogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgp
OyB9Ci0gICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOworICAgICAgICB2
b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksICZzX2luZm8pOyB9
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggYTcyYzVjZWQ1OWZiM2Q4YWYz
ZDJjMGMxZTg0MDRjODEzMTNmMmM4Yi4uZGMxMmE4YmY0ZjY2ZjdjYjcxNjBjZGYyOGFlZjA1MjA3
NzVkM2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEt
MDktMjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3RhdGljIHZlcnNpb24gb2YgSlNDZWxsOjp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggd2UganVz
dCBleHRyYWN0IHRoZSBib2RpZXMgb2YgdGhlIHZpcnR1YWwgdmlzaXRDaGlsZHJlbiBtZXRob2Rz
CisgICAgICAgIHRocm91Z2hvdXQgdGhlIEpTQ2VsbCBpbmhlcml0YW5jZSBoaWVyYXJjaHkgb3V0
IGludG8gc3RhdGljIG1ldGhvZHMsIHdoaWNoIGFyZSAKKyAgICAgICAgbm93IGNhbGxlZCBmcm9t
IHRoZSB2aXJ0dWFsIG1ldGhvZHMuICBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBzdGVwIGluIHRy
eWluZyB0byAKKyAgICAgICAgbW92ZSB0aGUgdmlydHVhbC1uZXNzIG9mIHZpc2l0Q2hpbGRyZW4g
aW50byBvdXIgb3duIGN1c3RvbSB2dGFibGUgc3RvcmVkIGluIAorICAgICAgICBDbGFzc0luZm8u
ICBXZSBuZWVkIHRvIGNvbnZlcnQgdGhlIG1ldGhvZHMgdG8gc3RhdGljIG1ldGhvZHMgaW4gb3Jk
ZXIgdG8gYmUgCisgICAgICAgIGFibGUgdG8gbW9yZSBlYXNpbHkgc3RvcmUgYW5kIHJlZmVyIHRv
IHRoZW0gaW4gb3VyIGN1c3RvbSB2dGFibGUgc2luY2Ugbm9ybWFsIAorICAgICAgICBtZW1iZXIg
bWV0aG9kcyBzdG9yZSBzb21lIGltcGxpY2l0IGluZm9ybWF0aW9uIGluIHRoZWlyIHR5cGVzLCBt
YWtpbmcgaXQgCisgICAgICAgIGltcG9zc2libGUgdG8gc3RvcmUgdGhlbSBnZW5lcmljYWxseSBp
biBDbGFzc0luZm8uCisKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKKyAgICAgICAgKFVz
ZXJPYmplY3RJbXA6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFVzZXJPYmplY3RJ
bXA6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKKwogMjAxMS0w
OS0xNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFVuemlwIGluaXRpYWxpemF0aW9uIGxpc3RzIGFuZCBjb25zdHJ1Y3RvcnMgaW4gSlNDZWxsIGhp
ZXJhcmNoeSAoNi83KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmpl
Y3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4
IGFkMzY5M2IzYWQxMzA1ZTBhOWMyNDZlYjZjOTk4MTMzNjFlMGY0YmUuLjZjM2E3ZDQ5NWFlMTQ1
MWU3MTBmZmE5YTBjYTcwNDNhN2MwYWY3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAKQEAgLTQwNCw5ICs0MDQsMTUgQEAgVVN0cmluZyBVc2VyT2JqZWN0SW1wOjp0
b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
dm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICBpZiAo
ZkpTVXNlck9iamVjdCkKLSAgICAgICAgZkpTVXNlck9iamVjdC0+TWFyaygpOworICAgIHZpc2l0
Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgVXNlck9iamVjdEltcDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFVzZXJP
YmplY3RJbXAqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7
CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
aWYgKHRoaXNPYmplY3QtPmZKU1VzZXJPYmplY3QpCisgICAgICAgIHRoaXNPYmplY3QtPmZKU1Vz
ZXJPYmplY3QtPk1hcmsoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9V
c2VyT2JqZWN0SW1wLmggYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCmlu
ZGV4IDQzZmYwZGE4ZDc1NmFmZTZmZjNkN2M4NjM5YTlkMzEzYWFkMDViYmIuLmE4NmI1MmNiMzYz
YThkN2UwMTRlODgxMmIzOTdmYWM3ZGNjNTg1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuaApAQCAtNjIsNyArNjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUg
dG9OdW1iZXIoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9T
dHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0
dWFsKFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgSlNVc2VyT2JqZWN0ICpHZXRKU1VzZXJPYmplY3QoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY1NjExNTU0OTlmNGEzYTVmYzk2NGYxMThmZjk4YzVhYjI1
ZWJkN2EuLjNkMjEyYjEyZDExYzQ3ODYwYmRhZGQ1NjVlMjBkMTk4MjBiYzU4ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMTEtMDktMjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3RhdGljIHZlcnNpb24gb2YgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02ODQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGp1c3QgZXh0
cmFjdCB0aGUgYm9kaWVzIG9mIHRoZSB2aXJ0dWFsIHZpc2l0Q2hpbGRyZW4gbWV0aG9kcworICAg
ICAgICB0aHJvdWdob3V0IHRoZSBKU0NlbGwgaW5oZXJpdGFuY2UgaGllcmFyY2h5IG91dCBpbnRv
IHN0YXRpYyBtZXRob2RzLCB3aGljaCBhcmUgCisgICAgICAgIG5vdyBjYWxsZWQgZnJvbSB0aGUg
dmlydHVhbCBtZXRob2RzLiAgVGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCBpbiB0cnlpbmcg
dG8gCisgICAgICAgIG1vdmUgdGhlIHZpcnR1YWwtbmVzcyBvZiB2aXNpdENoaWxkcmVuIGludG8g
b3VyIG93biBjdXN0b20gdnRhYmxlIHN0b3JlZCBpbiAKKyAgICAgICAgQ2xhc3NJbmZvLiAgV2Ug
bmVlZCB0byBjb252ZXJ0IHRoZSBtZXRob2RzIHRvIHN0YXRpYyBtZXRob2RzIGluIG9yZGVyIHRv
IGJlIAorICAgICAgICBhYmxlIHRvIG1vcmUgZWFzaWx5IHN0b3JlIGFuZCByZWZlciB0byB0aGVt
IGluIG91ciBjdXN0b20gdnRhYmxlIHNpbmNlIG5vcm1hbCAKKyAgICAgICAgbWVtYmVyIG1ldGhv
ZHMgc3RvcmUgc29tZSBpbXBsaWNpdCBpbmZvcm1hdGlvbiBpbiB0aGVpciB0eXBlcywgbWFraW5n
IGl0IAorICAgICAgICBpbXBvc3NpYmxlIHRvIHN0b3JlIHRoZW0gZ2VuZXJpY2FsbHkgaW4gQ2xh
c3NJbmZvLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNBdHRyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXR0cjo6dmlzaXRDaGls
ZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0F1ZGlvQ29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1
bGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xh
cmF0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3JpcHRB
dWRpb05vZGU6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2
YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VD
aGFubmVsOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3Nh
Z2VDaGFubmVsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0
Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuVmlydHVh
bCk6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2Rl
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyOjp2aXNpdENoaWxkcmVuVmly
dHVhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuVmlydHVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTU1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXQ6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlblZpcnR1
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlblZp
cnR1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0
dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OnZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
OgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpRdFJ1bnRpbWVPYmplY3Q6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRS
dW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
YnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQu
aDoKKwogMjAxMS0wOS0yMyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JTdHlsZVNoZWV0IHNob3VsZCB1c2Ug
c3R5bGVzaGVldCdzIG9yaWdpbmFsIHVybCwgbm90IGZpbmFsIG9uZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggM2YzZDFlMDQxYWEwNzE2MTMwMDllYjExMDAwMjI3NjYxMjFiZGM0ZS4uMTJjMGI4
MTkwYzU3OTczOGY2NjQwYmQyNjg3OTEzZGI4MmYwMTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTgxNSw3ICs4MTUsNyBAQCBfX1pON1dlYkNvcmU2RWRpdG9yNmluZGVudEV2CiBfX1pON1dl
YkNvcmU2RWRpdG9yN0NvbW1hbmRDMUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yN2NvbW1hbmRFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yN291dGRlbnRFdgotX19aTjdXZWJDb3Jl
NkpTTm9kZTEzdmlzaXRDaGlsZHJlbkVSTjNKU0MxMVNsb3RWaXNpdG9yRQorX19aTjdXZWJDb3Jl
NkpTTm9kZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4zSlNDMTFTbG90VmlzaXRvckUKIF9fWk43
V2ViQ29yZTZKU05vZGUzcHV0RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5T
MV83SlNWYWx1ZUVSTlMxXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlNkpTTm9kZTZz
X2luZm9FCiBfX1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0NDlhNWNlMTI3NzlmZDY4NjMwZTM2
ZTMwNWMwY2MxODkxZmJhNzFmLi4zYjEwODZkNTc0Zjk2Nzc3ZDQyOTRlMDE5ZGEzMTg4NjhmYWNh
YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKQEAg
LTM5LDE0ICszOSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLXZvaWQgSlNBdHRyOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQordm9pZCBKU0F0dHI6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Cisg
ICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0F0dHI6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F0
dHIqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0F0dHIqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+
b3duZXJFbGVtZW50KCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmplY3QtPmltcGwo
KS0+b3duZXJFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGM4ZTFl
Y2U4MWVlZDIxNGJkNDJlY2FjNWQ0MGQzOWRkYmFlZjM0ODcuLjRlNmE0NmQzMTU2NzQ3ZjY5NzEy
YzRjMmZiNTNhMjljMWEzYmU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDEzICszOSwxOSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNBdWRpb0NvbnRl
eHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQXVkaW9Db250
ZXh0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRy
ZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNBdWRpb0NvbnRleHQ6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvQ29u
dGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQXVkaW9Db250ZXh0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5l
cnModmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnZpc2l0SlNFdmVu
dExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U0F1ZGlvQ29udGV4dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0F1ZGlvQ29udGV4dChFeGVjU3Rh
dGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1
bGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9t
LmNwcAppbmRleCAxNTViYTZlM2NjNTE1ZDRlZDk1ZWExOWZiNDQyOTM0ZGUwMjI1YzA1Li43MWIw
NmNlMWQyOTY3ODU4OGM3MDYxNWRiMmUxZjBlZjVkOWI2ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKQEAgLTQ4LDEzICs0OCwxOSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNDU1NS
dWxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU0NTU1J1bGU6
OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0
aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NTU1J1bGUqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU0NTU1J1bGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRoaXNPYmplY3QtPmltcGwoKSkpOwogfQog
CiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDU1NSdWxlKiBydWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNDY1ZTc4MzRh
NWQ2MGVjNjJhMGZhNGE4ZDhlY2U0NDJiZmFkMmUxNC4uY2Q5YWNlZThkMTg0ZjIwM2Y5ZmI4Mjdm
ZTJiZTAwMjhlNTY1NjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC00MywxMyArNDMsMTkg
QEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
K3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZz
X2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlND
U1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkp
KTsKIH0KIAogLy8gQ2hlY2sgZm9yIGEgQ1NTIHByZWZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCmluZGV4IGFkNjQ2YTA1MzI4MjcyNWJhMDkyYzU4MjMyMTZmN2YwNWQ5ZmM0NjEuLmRhNjAy
OGMwODY2NjM1NWUyNDIyMDZjMjYxODZiMjkzMDY4OTY1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcApAQCAtMzksMTQgKzM5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVu
KHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCktPmNhbnZhcygpKSk7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVjdC0+aW1wbCgpLT5jYW52
YXMoKSkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDcxZDk4YzkxYTU3ZDdiNjEzMzE3ZGE2YTdiNDgxMjU0NzA1MTQyMGMuLjUyODY3
ZDMwYTg2NzkwMTljYzE4YjM4YjQ4NTJkNmFiZTI2NThhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU1LDIzICs1NSwyOSBA
QCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTT2JqZWN0KiB0aGlzVgogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiB9CiAKLXZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuVmlydHVhbChK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30K
Kwordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGVu
ZCA9IHN0cnVjdHVyZXMoKS5lbmQoKTsKLSAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVy
YXRvciBpdCA9IHN0cnVjdHVyZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgSlNE
T01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZXMoKS5l
bmQoKTsKKyAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZpdC0+c2Vjb25kKTsKIAotICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJh
dG9yIGVuZDIgPSBjb25zdHJ1Y3RvcnMoKS5lbmQoKTsKLSAgICBmb3IgKEpTRE9NQ29uc3RydWN0
b3JNYXA6Oml0ZXJhdG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBlbmQy
OyArK2l0MikKKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0gdGhpc09i
amVjdC0+Y29uc3RydWN0b3JzKCkuZW5kKCk7CisgICAgZm9yIChKU0RPTUNvbnN0cnVjdG9yTWFw
OjppdGVyYXRvciBpdDIgPSB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS5iZWdpbigpOyBpdDIg
IT0gZW5kMjsgKytpdDIpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdDItPnNlY29uZCk7CiAK
LSAgICBpZiAobV9pbmplY3RlZFNjcmlwdCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW5q
ZWN0ZWRTY3JpcHQpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCk7CiB9CiAK
IHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgK
aW5kZXggOTAwMjgzMDgzNGUwZjMwYjFiZTBkNDJmODE2YjkyZTkzMTI1OTRjMC4uOTlhNjMxZmM5
MzY5OGE3OWIyY2I3MGMxNDRlYTJlMTdlZTZhMDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC02NCw3ICs2NCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCopOwog
ICAgICAgICBKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQoKSBjb25zdDsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuVmlydHVhbChKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9y
Jik7CiAKICAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQu
Z2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IGJmNDRiZGJkY2Y0ZWM5MjYzYzdmOWYwMjA1MzcyOTNlNzk3M2EwYjAu
LmFkYjA1MWY3Njc4YTdjMzA0NzdlNzU0YWU3ZDI1MGQyMTEzNWJjMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc3LDE1ICs3
NywyMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lk
IEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZp
c2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3c6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGltcGwoKS0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZy
YW1lKCkpCisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUo
KSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAxNTg4ZDRm
ZWQwMjFlZTZjYzY2ZmY1MzliOGYwMDQ2YTNlYmQ5NGE3Li5lMTA2Njg4Y2JkZGQwYTU0ZmVjMTNi
Njc2OTUxOTk5MjYxNGJjMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtODMsMTQgKzgzLDIwIEBAIHZvaWQgSlNET01XaW5kb3dT
aGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAvLyBKU09i
amVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhp
cywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRE9NV2luZG93U2hl
bGwqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgaWYgKG1fd2luZG93KQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmbV93aW5kb3cpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fd2lu
ZG93KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aW5kb3cpOwogfQog
CiBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggZmU4YTRmZGUwOTE2
MjMxZmQzN2Q2M2ZjYTE0OGQzODdiY2RlMzg4NS4uZTlhYmMxNTgxMmNmNDY3YTBmMjgyNmY2YTMw
NThjOThlOTNmMDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuaApAQCAtNzcsNyArNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2Rl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlv
Tm9kZUN1c3RvbS5jcHAKaW5kZXggZWJjMjNiMzZjZDNlNDc1NDYzN2U0MjNlN2I2Y2U2YTAyNDk3
MTAzZi4uMDA0ZDhiZTlkYjUyOTdhMzhiY2EwZDYxMzgwZGNmMjRmMTU3ZjMyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05v
ZGVDdXN0b20uY3BwCkBAIC0zNCwxMyArMzQsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNKYXZhU2NyaXB0QXVkaW9Ob2Rl
Ojp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4o
dGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNKYXZhU2NyaXB0QXVkaW9Ob2RlOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNKYXZhU2NyaXB0QXVk
aW9Ob2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcp
OwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgc3RhdGljX2Nh
c3Q8SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGltcGwoKSktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOworICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPih0
aGlzT2JqZWN0LT5pbXBsKCkpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKaW5kZXggMzRmNTkzMTMzNWZkN2E4YmU3
MzMyYWY0YmM5NGNjNzY5YWQwMmNjZC4uZmExOWM5ZDIyYzBhNmVkOWJmZDdiM2Q2YzQ3Y2QyNGFm
MjY4MmMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
Q2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTMyLDE4ICszMiwyNCBAQAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdm9pZCBKU01lc3NhZ2VDaGFubmVs
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorCit2b2lkIEpTTWVzc2FnZUNo
YW5uZWw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNNZXNzYWdlQ2hhbm5l
bDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgSlNNZXNz
YWdlQ2hhbm5lbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTWVzc2FnZUNoYW5uZWwqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKE1lc3Nh
Z2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5wb3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IHRoaXNPYmplY3QtPm1faW1wbC0+cG9ydDEoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHBvcnQpOwogCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5wb3J0
MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRoaXNPYmplY3QtPm1faW1wbC0+cG9y
dDIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4
IDhhZGY0YTdiYjM4ZWRhMGU0NmI0MDQ0NGY0YWQzOGZiNWNiZjFhMTIuLjllZWQ3MzkwMWNmN2E3
OGJhMzdjMDY0YjIwMTAxNTAwNTNjM2FhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00MiwxOCArNDIsMjQgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTTWVzc2Fn
ZVBvcnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTTWVzc2Fn
ZVBvcnQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNZXNzYWdl
UG9ydCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTTWVzc2FnZVBvcnQqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxv
Y2FsbHkgZW50YW5nbGVkIHBvcnQsIHdlIGNhbiBkaXJlY3RseSBtYXJrIGl0IGFzIHJlYWNoYWJs
ZS4gUG9ydHMgdGhhdCBhcmUgcmVtb3RlbHkgZW50YW5nbGVkIGFyZSBtYXJrZWQgaW4tdXNlIGJ5
IG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dCgpLgotICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IG1faW1wbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQq
IHBvcnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkpCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIG1faW1wbC0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW1wbC0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6
cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggNDdmNTZhMjllZjQ0
YWNjMDEwZjU3NDkyODcxYzZhMGNhZWQ3MDg4ZC4uYTEwZDUyYTE5YTdiMzhiMTM0MDY5NGYyNDUz
ZmFlODQyZDg4NDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmFtZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtMzUsNiArMzUsMTEgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIEpTTmFtZWROb2RlTWFwOjp2aXNp
dENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdENoaWxk
cmVuKHRoaXMsIHZpc2l0b3IpOworfQorCiBib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVt
c0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShpZGVudGlm
aWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CkBAIC00NiwxOCArNTEsMTkgQEAgSlNWYWx1ZSBK
U05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW4KICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKTsKIH0KIAotdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIEpTTmFtZWROb2RlTWFwKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIHRoZSB3cmFwcGVy
IGZvciBvdXIgdW5kZXJseWluZyBOYW1lZE5vZGVNYXAncyBlbGVtZW50CiAgICAgLy8gYWxpdmUg
YmVjYXVzZSBOYW1lZE5vZGVNYXAgYW5kIEF0dHIgcmVseSBvbiB0aGUgZWxlbWVudCBmb3IgZGF0
YSwgYW5kCiAgICAgLy8gZG9uJ3Qga25vdyBob3cgdG8ga2VlcCBpdCBhbGl2ZSBjb3JyZWN0bHku
CiAgICAgLy8gRklYTUU6IEZpeCB0aGlzIGxpZmV0aW1lIGlzc3VlIGluIHRoZSBET00sIGFuZCBy
ZW1vdmUgdGhpcy4KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLT5lbGVtZW50KCk7Cisg
ICAgRWxlbWVudCogZWxlbWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS0+ZWxlbWVudCgpOwogICAg
IGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KGVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwCmluZGV4IDUxZTNiYjg2YWFlZTMyYjVmMjE2NTliZTEzN2M4MmE0NDMyZmRmMTEuLjk3
MTUyNjY1MGFjNGJiYjA0NTE0NTFmYjI2NGU0NDRmYjUxYzQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtMTkyLDE0ICsxOTIsMjAgQEAgU2Nv
cGVDaGFpbk5vZGUqIEpTTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKiBub2RlKQogICAgIHJldHVybiBub2RlOwogfQogCi12b2lkIEpTTm9kZTo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOb2RlOjp2aXNpdENo
aWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlz
aXRvcik7Cit9CisKK3ZvaWQgSlNOb2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNOb2RlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNOb2RlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCAmc19pbmZvKTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0Zs
YWcpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJU
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAot
ICAgIE5vZGUqIG5vZGUgPSBtX2ltcGwuZ2V0KCk7CisgICAgTm9kZSogbm9kZSA9IHRoaXNPYmpl
Y3QtPm1faW1wbC5nZXQoKTsKICAgICBub2RlLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CiAKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAppbmRleCBjMTUx
YzU0YzRhMDJhOTRmNWIyMmQ0M2FhNjZhMmU0MThmZTMyMTQxLi41NjA4MWVjMTM1Njk1Y2IwYjA4
MjFjMjZjY2Y1MmI3Y2E2NmNiOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKQEAgLTM2LDEzICszNiwxOSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNOb2RlRmlsdGVyOjp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU05vZGVGaWx0ZXI6OnZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlz
LCB2aXNpdG9yKTsKK30KKwordm9pZCBKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU05vZGVGaWx0ZXIqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU05vZGVGaWx0ZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT5pbXBsKCkpOwogfQogCiBQYXNz
UmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVJdGVyYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHAKaW5kZXggMDJkMTA4ZDI0ZjVkZmFhZTA5M2ExZGVjY2E1YjI3
NmM3MTM4OGIwYS4uNzA1NTk0NjJhNTc4ODVkOTY2YjA5NWNhNWYxMzU1ZWIwMDI4MDI1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcApAQCAtMjksMTQgKzI5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3ZvaWQgSlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFs
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTTm9kZUl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNOb2RlSXRlcmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZs
YWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhv
dXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
KyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogCi0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IG1faW1wbC0+ZmlsdGVyKCkp
CisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IHRoaXNPYmplY3QtPm1faW1wbC0+ZmlsdGVy
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1
c3RvbS5jcHAKaW5kZXggZGQyMGZiYTBiNzgzZDAxM2Y0MjRiNTc1MmU1Y2E3ZTg5MDExN2EzNC4u
ODdlNmJmNjM5ZDkwZTQzZDc0OTM0MjIzYWNiYThmMDIwN2ExOWRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9t
LmNwcApAQCAtMzUsMTMgKzM1LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBK
U1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQordm9pZCBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisK
K3ZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqIGNl
bGwsIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTVkdFbGVtZW50SW5zdGFu
Y2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1NWR0VsZW1lbnRJbnN0YW5jZSo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3QoaW1wbCgpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSk7CisgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0LT5pbXBsKCktPmNvcnJlc3BvbmRp
bmdFbGVtZW50KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCmluZGV4IDNl
Mzc5NjkzN2NkZWE4ZmU1ZDRjNmFiMDdmMjRkZjJlYTllZWY0ZGMuLjlmMzlhMTRlNzVjM2M1NGQ1
MTBhMTMzYzdmNzBhYjI2OGE3NDAwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAgLTQzLDE0ICs0MywyMCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNTaGFyZWRX
b3JrZXI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTU2hhcmVk
V29ya2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOworICAgIHZpc2l0Q2hp
bGRyZW4odGhpcywgdmlzaXRvcik7Cit9CisKK3ZvaWQgSlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1NoYXJl
ZFdvcmtlciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU2hhcmVkV29ya2VyKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKICAg
ICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChNZXNzYWdlUG9y
dCogcG9ydCA9IGltcGwoKS0+cG9ydCgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRo
aXNPYmplY3QtPmltcGwoKS0+cG9ydCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cG9ydCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5
bGVTaGVldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hl
ZXRDdXN0b20uY3BwCmluZGV4IDIxZTAwYjE2OGMyMjU0MTE4MTE0ZDJhNDkxZTFlNGUyMDUxMWM2
ZTYuLjJkNzI2YWJiMTdmOGY0ZjM3NDgzYTVhNDAyM2FlM2EwYzY0ODBjY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzUs
MTMgKzM1LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsK
KyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTU3R5bGVTaGVl
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTU3R5bGVTaGVldCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU3R5bGVTaGVldCo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChyb290KGltcGwoKSkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJv
b3QodGhpc09iamVjdC0+aW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9t
LmNwcAppbmRleCBkZmYzNDY5Y2UyOTgwNzQ2YTUyMzFlNWQxMzYzOTc0NTBiZmMyNjVjLi45NWVk
YzA1YTVhODE2NjdjYzZhMWYwMmViOGEzNzlhNzEyZDExMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI4LDE1ICsyOCwy
MSBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAot
dm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisK
K3ZvaWQgSlNUcmVlV2Fsa2VyOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpT
VHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7Cisg
ICAgSlNUcmVlV2Fsa2VyKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUcmVlV2Fsa2VyKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZv
KTsKICAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmIChOb2Rl
RmlsdGVyKiBmaWx0ZXIgPSBtX2ltcGwtPmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBm
aWx0ZXIgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPmZpbHRlcigpKQogICAgICAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGNk
NTUyODQwYzM4MWIyZGE2NWE2NzhmYWE4YmE3YjNhODM4ZWNiN2EuLjBlNDdmNTMyMjQxY2ZjZmQ0
NjczOWYxZjQzNmViMzA5NDhmMzlmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTE5
MiwxMyArMTkyLDE5IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAgICAgcmV0dXJuIGpzTnVs
bCgpOwogfQogCi12b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRD
aGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZp
c2l0b3IpOworfQorCit2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNW
aXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsK
LSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChpbXBsKCkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHRo
aXNPYmplY3QtPmltcGwoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4ODdhM2Jj
MDQ1ZTliZDcxYjdkNGYyYjZmMTk5YzMxZDY3ZWQ3MDZiLi5mOTAwNDk2MGI0NWRmNGIxYmY1YmZi
MDI5NjM4ODNjNzFiM2I0MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTUzLDE5ICs1MywyNSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNXb3JrZXJDb250
ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBKU1dvcmtlckNv
bnRleHQ6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CisgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dvcmtl
ckNvbnRleHQqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckNvbnRleHQqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwog
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKFdvcmtlckxv
Y2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS0+b3B0aW9uYWxMb2NhdGlvbigpKQorICAgIGlmIChX
b3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSB0aGlzT2JqZWN0LT5pbXBsKCktPm9wdGlvbmFsTG9j
YXRpb24oKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGxvY2F0aW9uKTsKLSAgICBp
ZiAoV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSBpbXBsKCktPm9wdGlvbmFsTmF2aWdhdG9y
KCkpCisgICAgaWYgKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gdGhpc09iamVjdC0+aW1w
bCgpLT5vcHRpb25hbE5hdmlnYXRvcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
bmF2aWdhdG9yKTsKIAotICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3Ip
OworICAgIHRoaXNPYmplY3QtPmltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3Ip
OwogfQogCiBib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMjU3NTc1NjY2NmRmZTYwZTdhM2QyNGRhN2EwOTFl
YTAzM2I5MWJkMi4uNjA5MTM4MzYxNjg1YTU5YjU1MTBhYTU1ZDE0MWEyYjI0OTUyYTliOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1
c3RvbS5jcHAKQEAgLTU0LDI4ICs1NCwzNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3Ip
OworfQorCit2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hNTEh0dHBSZXF1ZXN0KiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNYTUxIdHRwUmVxdWVzdCo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHZpc2l0b3IpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVw
bG9hZCA9IG1faW1wbC0+b3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RV
cGxvYWQqIHVwbG9hZCA9IHRoaXNPYmplY3QtPm1faW1wbC0+b3B0aW9uYWxVcGxvYWQoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHVwbG9hZCk7CiAKLSAgICBpZiAoRG9jdW1lbnQq
IHJlc3BvbnNlRG9jdW1lbnQgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKKyAgICBp
ZiAoRG9jdW1lbnQqIHJlc3BvbnNlRG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlv
bmFsUmVzcG9uc2VYTUwoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNl
RG9jdW1lbnQpOwogCi0gICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0g
bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKKyAgICBpZiAoQXJyYXlCdWZm
ZXIqIHJlc3BvbnNlQXJyYXlCdWZmZXIgPSB0aGlzT2JqZWN0LT5tX2ltcGwtPm9wdGlvbmFsUmVz
cG9uc2VBcnJheUJ1ZmZlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocmVzcG9u
c2VBcnJheUJ1ZmZlcik7CiAKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCi0gICAgaWYg
KEJsb2IqIHJlc3BvbnNlQmxvYiA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKKyAg
ICBpZiAoQmxvYiogcmVzcG9uc2VCbG9iID0gdGhpc09iamVjdC0+bV9pbXBsLT5vcHRpb25hbFJl
c3BvbnNlQmxvYigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocmVzcG9uc2VCbG9i
KTsKICNlbmRpZgogCi0gICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7
CisgICAgdGhpc09iamVjdC0+bV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7
CiB9CiAKIC8vIEN1c3RvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAKaW5kZXggMzU0ODlkYzQ3YThlMDE0ZWYyNDI2
MjM2NDFjYTFlYTdhYTQ3NDJmNC4uMDk5NDJmNWVlZDA0ZmQzYjFjZmZkMTM1ZDJiMTgyNzlhMWE3
MDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0aFJlc3Vs
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0aFJlc3Vs
dEN1c3RvbS5jcHAKQEAgLTM3LDE0ICszNywyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRDaGlsZHJlblZp
cnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzLCAmc19pbmZvKTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwor
fQorCit2b2lkIEpTWFBhdGhSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1hQYXRoUmVzdWx0KiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNYUGF0aFJlc3VsdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICBjb25zdCBYUGF0aDo6VmFsdWUmIHhwYXRoVmFsdWUgPSBpbXBsKCkt
PnZhbHVlKCk7CisgICAgY29uc3QgWFBhdGg6OlZhbHVlJiB4cGF0aFZhbHVlID0gdGhpc09iamVj
dC0+aW1wbCgpLT52YWx1ZSgpOwogICAgIGlmICh4cGF0aFZhbHVlLmlzTm9kZVNldCgpKSB7CiAg
ICAgICAgIGNvbnN0IFhQYXRoOjpOb2RlU2V0JiBub2Rlc1RvTWFyayA9IHhwYXRoVmFsdWUudG9O
b2RlU2V0KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZXNUb01hcmsuc2l6
ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggMDk1MjhkNTZiYzU5OTU5NjdkYjFhNDc2MWQwNWI4YWFiN2Vm
ZmU5Yi4uNTIwM2ZkZjBjNDA3MTg4NmJlY2JkNDYxOGMxMWE2YmM4ZTlkM2Q4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTg3Nyw3ICs4NzcsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgdmlzaXQgZnVuY3Rp
b24KICAgICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYp
O1xuXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpO1xuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBKU0M6OlNsb3RWaXNpdG9yJik7XG5cbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpT
Qzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiJ9ID0gMTsKICAgICB9CiAKQEAgLTIyMDAsMjEgKzIy
MDEsMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tTWFya0Z1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2Ns
YXNzTmFtZX06OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19p
bmZvKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRDaGls
ZHJlbih0aGlzLCB2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOworCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFz
c05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ09NUElMRV9B
U1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
O1xuIik7CiAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RXZlbnRUYXJnZXQifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpT
RXZlbnRMaXN0ZW5lcnModmlzaXRvcik7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgICAgICBmb3JlYWNo
IChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGF0
dHJpYnV0ZSA9ICRfOwogICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChtXyIgLiAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fIiAuICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lIC4gIilcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tXyIgLiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBmYzY4
M2E1ZGY5NDU3ZjExMjZiMjk4N2Q5ZmQxNjA1ZjcwYTMxMWYzLi4xMTliNDllMDQwNjkyYTFkOGUz
OTBjZGYxMGUzMDg2ZGNiN2E3YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTg3MCwxNiArMTg3MCwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKKyAgICB2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOworfQorCit2b2lkIEpTVGVzdE9i
ajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVu
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBBU1NFUlQo
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIGlmIChtX2NhY2hlZEF0dHJpYnV0ZTEp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZEF0dHJpYnV0ZTEpOwotICAgIGlmICht
X2NhY2hlZEF0dHJpYnV0ZTIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZEF0dHJp
YnV0ZTIpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5v
dmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMSkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMSk7
CisgICAgaWYgKHRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMikKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkQXR0cmlidXRlMik7CiB9CiAKIC8vIENvbnN0
YW50IGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaAppbmRleCA4ZDUzNDEyZTg2NzYzOTZjNGUxNjIxNTNlMTJjN2QzYjhl
NzRkZDFmLi5mMjlkYzhkNTkyMTM4ZjAzYTI4OWFkYTE2MWQ1YWU4OTA3N2YzZGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
CkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRBdHRyaWJ1dGUxOwogICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRBdHRyaWJ1dGUyOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlblZpcnR1YWwoSlNDOjpTbG90VmlzaXRvciYpOworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAKICAg
ICAvLyBDdXN0b20gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5jcHAKaW5kZXggNGJiZTY1ZTAxMTNkYmZjOTg0ZDdhNTQ2NDQ3ZGRlNjVjMDk5MjZhYS4uMjdi
ZjFjMTVlOTU0OGUxMzM1NzY4MjE3Y2ZiNjU4YzQyNzYwNWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCkBAIC02MiwxMCArNjIsMTYgQEAgcHVibGljOgogICAg
IAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgdmlydHVhbCB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAg
UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLSAgICAgICAgUXRJbnN0YW5j
ZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oZ2V0SW50ZXJuYWxJbnN0YW5j
ZSgpKTsKKyAgICAgICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCisgICAgeworICAgICAgICBRdFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxRdFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICAgICAgUnVudGltZU9iamVjdDo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgUXRJbnN0YW5jZSog
aW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4odGhpc09iamVjdC0+Z2V0SW50ZXJu
YWxJbnN0YW5jZSgpKTsKICAgICAgICAgaWYgKGluc3RhbmNlKQogICAgICAgICAgICAgaW5zdGFu
Y2UtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcAppbmRleCA3M2RkMmJmNTYyZWVmMTJmMjIxYzY2MzI2MDg5Nzk4MzM2
ODI4YmYwLi45NWVhOGQ5MzQ3ZjUyNDYyNWRmNGU2OTI1NWYzZjk0ZDVmNGQ1OTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xNDM5LDEwICsxNDM5LDE2IEBA
IHZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVuCiAgICAgZC0+bV9hbGxvd1ByaXZhdGUgPSBhbGxvd1By
aXZhdGU7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJl
blZpcnR1YWwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgUXRSdW50aW1lTWV0aG9kOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhvZCk7Cisg
ICAgdmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKK30KKwordm9pZCBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFF0
UnVudGltZU1ldGFNZXRob2QqPihjZWxsKTsKKyAgICBRdFJ1bnRpbWVNZXRob2Q6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEq
IGQgPSB0aGlzT2JqZWN0LT5kX2Z1bmMoKTsKICAgICBpZiAoZC0+bV9jb25uZWN0KQogICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmZC0+bV9jb25uZWN0KTsKICAgICBpZiAoZC0+bV9kaXNjb25uZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggOTA2ZDEwOGUxZTc2OWIy
NTc2YWJlM2RkMTA2ZDc0MzViOGJmMjg3MC4uZGUyMTNjMjA5ODEyMzFkYWFmZjZmNmNiZWY3MWM5
MzVkNWE3YjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRp
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xNjgs
NyArMTY4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsKFNsb3RWaXNpdG9yJik7Cisg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZERhdGEqIGRfZnVuYygpIGNvbnN0IHty
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSo+KGRfcHRyKTt9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGZmN2I2ZDdmYjU0NTNm
Yzc1M2E2MTJjMjE0YzBjZjI5OGJiNzNmNmYuLjhhYzBlZjcwY2FlYWMyYzIwYThhZTFkN2UwODdi
NjJkMjVlYjgwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC0x
NDQsNyArMTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0KICNl
bmRpZgotICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBT
ZWUgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJikgaW4KKyAgICAg
ICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2Vy
Q29udGV4dDo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZpc2l0b3ImKSBpbgogICAgICAgICAv
LyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgogICAgICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9w
dGlvbmFsTmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KICAg
ICAgICAgV29ya2VyTG9jYXRpb24qIG9wdGlvbmFsTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2xvY2F0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA1M2RiMGZiYTI1
Y2ZlNmU5NDJiZTA5NGE4MTcwYTg3MDk4ZDNjYzZhLi5hZmM3YmNlNjk0OTZhZGUzN2YwZjMwZjll
YWY1YmUxMGY4ZDBjZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTU2LDcgKzU2LDcg
QEAgX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50
RTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxP
YmplY3RFUEtOM0pTQzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzdFbGVtZW50RWo7CiBfWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUU7Ci1fWk43V2ViQ29yZTZKU05vZGUxM3Zpc2l0Q2hp
bGRyZW5FUk4zSlNDMTFTbG90VmlzaXRvckU7CitfWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hp
bGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFOwogX1pON1dlYkNvcmU2SlNOb2RlM3B1
dEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8x
NVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRTsKIF9aTjdXZWJD
b3JlNnRvTm9kZUVOM0pTQzdKU1ZhbHVlRTsK
</data>
<flag name="review"
          id="105456"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="105458"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>