<?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>90582</bug_id>
          
          <creation_ts>2012-07-04 20:23:56 -0700</creation_ts>
          <short_desc>[chromium] Move compositor quads to Platform/chromium/public</short_desc>
          <delta_ts>2012-07-11 19:08:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90094</dependson>
          <blocked>88821</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>hayato</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663258</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-04 20:23:56 -0700</bug_when>
    <thetext>[chromium] Move compositor quads to Platform/chromium/public</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663268</commentid>
    <comment_count>1</comment_count>
      <attachid>150868</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-04 20:50:08 -0700</bug_when>
    <thetext>Created attachment 150868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663270</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 20:53:29 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663271</commentid>
    <comment_count>3</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-04 20:54:58 -0700</bug_when>
    <thetext>This is the latest step in my quad pickling quest.  See ChangeLog for detailed explanation.

The only remaining problem is that webkit_unit_tests are not compiling because they don&apos;t specify WEBKIT_IMPLEMENTATION, which seems odd to me because they liberally use WebCore objects.  Anyone have advice on the best way to address that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663272</commentid>
    <comment_count>4</comment_count>
      <attachid>150868</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 20:56:17 -0700</bug_when>
    <thetext>Comment on attachment 150868
Patch

Attachment 150868 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13138834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663536</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-05 07:03:06 -0700</bug_when>
    <thetext>&gt; The only remaining problem is that webkit_unit_tests are not compiling because they don&apos;t specify WEBKIT_IMPLEMENTATION, which seems odd to me because they liberally use WebCore objects.  Anyone have advice on the best way to address that?

That should be fixed soon in https://bugs.webkit.org/show_bug.cgi?id=90094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663572</commentid>
    <comment_count>6</comment_count>
      <attachid>150868</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-05 08:23:21 -0700</bug_when>
    <thetext>Comment on attachment 150868
Patch

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

&gt; Source/Platform/chromium/public/WebCompositorQuad.h:47
&gt; +// enum is used to &quot;safely&quot; upcast to the derived class.

nit:downcast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664211</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-06 11:25:01 -0700</bug_when>
    <thetext>Quads are a compositor class and in uber-comp will be serialized to some other process in Chromium.  Classes in the Platform directory are abstractions that wrap Chromium code so that WebCore/WebKit can use it.  Post-GTFO, serializing quads seems like a Chromium&lt;-&gt;Chromium interaction.

Maybe I&apos;m missing something obvious, but why does the Platform directory need to be involved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664272</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-06 14:55:44 -0700</bug_when>
    <thetext>James suggested using Platform/chromium/public in Bug 88821.

GTFO hasn&apos;t happened yet and I&apos;d like to see a basically working ubercomp implementation in the next month, as we&apos;ll depend on it for various features.  Nor should this really conflict with GTFO, as in the early stages of GTFO these files can still be used (perhaps just replacing IntRect with gfx::Rect if CC will end up using those), and in the later stages they can be moved with rename to a CC &lt;-&gt; Chromium communication layer analogous to the WebKit namespace.  Ultimately the main point of this patch is to move quads to a serializable format in a publically accessible area and that should be needed regardless of GTFO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664338</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-07-06 22:28:10 -0700</bug_when>
    <thetext>http://www.urbandictionary.com/define.php?term=gtfo ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664574</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-08 20:33:53 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; http://www.urbandictionary.com/define.php?term=gtfo ?

GTFO is the codename for the project to factor the Chromium Compositor out of WebCore and into a separate library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665105</commentid>
    <comment_count>11</comment_count>
      <attachid>150868</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-09 13:06:52 -0700</bug_when>
    <thetext>Comment on attachment 150868
Patch

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

Thanks for the explanation and the pointer to the other bug.  If you need this in the next month, then this approach definitely makes sense.  We can always move things back out of the Platform API later once they&apos;re only needed internally again.

I&apos;m happy to R+ once this patch passes the CQ, assuming somebody else approves the WebKit API changes.  Are you planning to follow up shortly with converting the other quad types and removing the typedefs?

&gt; Source/Platform/ChangeLog:31
&gt; +        - I converted the Material casting mechanism to materialCast() methods
&gt; +        living in the derived classes.  That way, the WebCompositorQuad header
&gt; +        doesn&apos;t need to know about all its derived classes.

This is a nice cleanup.  I know zlieber had been wanting to do this.

&gt; Source/Platform/chromium/public/WebCompositorQuad.h:30
&gt; +#include &quot;public/WebCompositorSharedQuadState.h&quot;

nit: You should remove the public/ here for includes to these sibling files.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCCheckerboardDrawQuad.h:29
&gt; +#include &quot;public/WebCompositorQuad.h&quot;

nit: Can you change #include &quot;public/WebFoo.h&quot; to #include &lt;public/WebFoo.h&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665284</commentid>
    <comment_count>12</comment_count>
      <attachid>151346</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-09 16:21:08 -0700</bug_when>
    <thetext>Created attachment 151346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665288</commentid>
    <comment_count>13</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-09 16:24:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Are you planning to follow up shortly with converting the other quad types and removing the typedefs?

OK, I updated this patch to convert the other quad types that were already POD (all except CCYUVVideoDrawQuad and CCRenderPassDrawQuad).  I&apos;ll follow up on those two harder cases and on the mass renaming in future patches.

&gt; &gt; Source/Platform/chromium/public/WebCompositorQuad.h:30
&gt; &gt; +#include &quot;public/WebCompositorSharedQuadState.h&quot;
&gt; 
&gt; nit: You should remove the public/ here for includes to these sibling files.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCCheckerboardDrawQuad.h:29
&gt; &gt; +#include &quot;public/WebCompositorQuad.h&quot;
&gt; 
&gt; nit: Can you change #include &quot;public/WebFoo.h&quot; to #include &lt;public/WebFoo.h&gt;?

All done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665291</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-09 16:27:13 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; Are you planning to follow up shortly with converting the other quad types and removing the typedefs?
&gt; 
&gt; OK, I updated this patch to convert the other quad types that were already POD (all except CCYUVVideoDrawQuad and CCRenderPassDrawQuad).  I&apos;ll follow up on those two harder cases and on the mass renaming in future patches.

What is non-POD in CCYUVVIdeoDrawQuad?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665301</commentid>
    <comment_count>15</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-09 16:34:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; Are you planning to follow up shortly with converting the other quad types and removing the typedefs?
&gt; &gt; 
&gt; &gt; OK, I updated this patch to convert the other quad types that were already POD (all except CCYUVVideoDrawQuad and CCRenderPassDrawQuad).  I&apos;ll follow up on those two harder cases and on the mass renaming in future patches.
&gt; 
&gt; What is non-POD in CCYUVVIdeoDrawQuad?

struct CCVideoLayerImpl::FramePlane.  That&apos;s technically POD, but that struct needs to be extracted into the WebKit namespace and the allocateData()/freeData() methods need to be moved elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665310</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-09 16:46:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; struct CCVideoLayerImpl::FramePlane.  That&apos;s technically POD, but that struct needs to be extracted into the WebKit namespace and the allocateData()/freeData() methods need to be moved elsewhere.

I see, thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665429</commentid>
    <comment_count>17</comment_count>
      <attachid>151390</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-09 19:31:49 -0700</bug_when>
    <thetext>Created attachment 151390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665430</commentid>
    <comment_count>18</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-09 19:32:02 -0700</bug_when>
    <thetext>Resolved conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665437</commentid>
    <comment_count>19</comment_count>
      <attachid>151390</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-09 19:54:21 -0700</bug_when>
    <thetext>Comment on attachment 151390
Patch

Attachment 151390 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13175284</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666873</commentid>
    <comment_count>20</comment_count>
      <attachid>151390</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-11 10:59:04 -0700</bug_when>
    <thetext>Comment on attachment 151390
Patch

R=me for these compositor changes, assuming you get API approval before submitting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667050</commentid>
    <comment_count>21</comment_count>
      <attachid>151774</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-11 14:15:50 -0700</bug_when>
    <thetext>Created attachment 151774
Patch

Fixed webkit_unit_tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667059</commentid>
    <comment_count>22</comment_count>
      <attachid>151774</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-11 14:23:13 -0700</bug_when>
    <thetext>Comment on attachment 151774
Patch

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

R=me.  aelias, can you get somebody to approve the WebKit API changes before submitting?

&gt; Source/WebCore/platform/chromium/support/WebCompositorSharedQuadState.cpp:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

nit: 2012.  You do this in a few places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667066</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-11 14:29:49 -0700</bug_when>
    <thetext>That&apos;s a lot of API.  I wish jamesr weren&apos;t on vacation so he could review this change.  Everything looks plausible, but I&apos;m not really an expert in this area.  m_sharedQuadState seems like the sketchiest part...  I think it&apos;s ok to land this patch with the understanding that jamesr might ask for changes when he gets back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667083</commentid>
    <comment_count>24</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-11 14:44:02 -0700</bug_when>
    <thetext>James has given some feedback on an earlier version at Bug 88821 so it shouldn&apos;t blindside him, anyway.

I agree about the sketchiness of SharedQuadState.  The pointer will also require a custom ipc_traits to pickle.  The concept exists to save RAM essentially -- the two WebTransformationMatrix&apos;es in it would add 256 bytes per quad, so we would end up with a 1MB quadlist if we had 5000 quads.  Given that our typical number of quads is low (20 to 100 I guess?), I&apos;m not sure this would be a disaster, but the last time this came up, there were objections about the RAM usage.  Enne/Dana, any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667092</commentid>
    <comment_count>25</comment_count>
      <attachid>151788</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-11 14:56:46 -0700</bug_when>
    <thetext>Created attachment 151788
Patch

Changed copyright years to 2012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667096</commentid>
    <comment_count>26</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-11 14:59:23 -0700</bug_when>
    <thetext>Thinking about SharedQuadState further, I think we should keep it, since it&apos;s an order-of-magnitude size difference.  We may find it introduces a scaling bottleneck if we do come up with an layer type (or website) involving thousands of quads, which is something that would otherwise be legitimate and performant.

I think this patch should be ready to submit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667099</commentid>
    <comment_count>27</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-11 15:00:50 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; James has given some feedback on an earlier version at Bug 88821 so it shouldn&apos;t blindside him, anyway.
&gt; 
&gt; I agree about the sketchiness of SharedQuadState.  The pointer will also require a custom ipc_traits to pickle.  The concept exists to save RAM essentially -- the two WebTransformationMatrix&apos;es in it would add 256 bytes per quad, so we would end up with a 1MB quadlist if we had 5000 quads.  Given that our typical number of quads is low (20 to 100 I guess?), I&apos;m not sure this would be a disaster, but the last time this came up, there were objections about the RAM usage.  Enne/Dana, any thoughts?

Although, there&apos;s nothing sketchy about SharedQuadState in *this* patch.  It&apos;s just what it means for pickling in a future patch.

I totally agree that CCSharedQuadState is possibly a premature optimization to avoid &quot;fat&quot; quads, but at the time that got added there was some general agreement that the memory savings were worth a small amount of extra complexity.  I could be convinced to remove it, but I&apos;d like to keep it for now too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667134</commentid>
    <comment_count>28</comment_count>
      <attachid>151801</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-11 15:28:06 -0700</bug_when>
    <thetext>Created attachment 151801
Patch

Resolved conflicts with Bug 90843</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667147</commentid>
    <comment_count>29</comment_count>
      <attachid>151801</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-11 15:38:09 -0700</bug_when>
    <thetext>Comment on attachment 151801
Patch

R=me again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667183</commentid>
    <comment_count>30</comment_count>
      <attachid>151801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-11 16:07:14 -0700</bug_when>
    <thetext>Comment on attachment 151801
Patch

Clearing flags on attachment: 151801

Committed r122383: &lt;http://trac.webkit.org/changeset/122383&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667184</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-11 16:07:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667314</commentid>
    <comment_count>32</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-11 19:01:40 -0700</bug_when>
    <thetext>This is probably related to this CL, not 90843:

&gt; FYI.
&gt; I fixed a build break in http://trac.webkit.org/changeset/122396
&gt; 
&gt; I cannot judge whether we should initialize opaque with &apos;true&apos; or &apos;false&apos;. Please check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667320</commentid>
    <comment_count>33</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-11 19:08:33 -0700</bug_when>
    <thetext>Thanks.  Not sure why that compiled earlier (compiler quirk?).

It doesn&apos;t matter whether or not it&apos;s true or false, since the default constructor is only for serialization and it will always be overwritten in practice.  We can leave it as false.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150868</attachid>
            <date>2012-07-04 20:50:08 -0700</date>
            <delta_ts>2012-07-09 16:21:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90582-20120704205007.patch</filename>
            <type>text/plain</type>
            <size>103121</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNTcxNzdmN2E2NDY2
NjhkYjVjYzZmZDY0OTEwNGUzMzU4ZWM4NWZmLi5jOTI5NmJhZjg3NzU5YmVhMTFiZDEzOGYwODkw
ODBlNmVkZjFjNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMi0wNy0wNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIGNvbXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NT
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQsIENDU29saWRDb2xvckRyYXdRdWFkIGFuZAorICAg
ICAgICBDQ1RleHR1cmVRdWFkIHRvIHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0
ZXAgdG8gcHVzaGluZyB0aGVtCisgICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBm
b3IgdGhlIHViZXJjb21wb3NpdG9yLgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJp
YWxpemUgdGhlIGNsYXNzIGhpZXJhcmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5p
c20gYXMgV2ViSW5wdXRFdmVudC4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJl
ZQorICAgICAgICByZXF1aXJlbWVudHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmlu
ZyBzaXplLCBhbmQgYSBwYWNraW5nCisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZh
dGUgZGF0YSBtZW1iZXJzIGFyZSBmaW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ug
b2YgdGhhdCwgd2UgY2FuIG1haW50YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24g
YW5kIGNvbnZlbmllbnQgQVBJcyAoYmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElP
TikgYXMgdGhlIG9yaWdpbmFsIGNsYXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0
aW9uLCB0aGUgb3JpZ2luYWwgV2ViQ29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVm
IHRvCisgICAgICAgIHRoZSBuZXcgY2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJl
ZFF1YWRTdGF0ZSB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJ
UENfU1RSVUNUX1RSQUlUUyBtYWNybywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEg
Y3VzdG9tCisgICAgICAgIHNlcmlhbGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4g
dGhlIHBvaW50ZXJzIGZyb20gcXVhZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKwor
ICAgICAgICAtIEkgY29udmVydGVkIHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBt
YXRlcmlhbENhc3QoKSBtZXRob2RzCisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFz
c2VzLiAgVGhhdCB3YXksIHRoZSBXZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9l
c24ndCBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAg
ICAgLSBRdWFkIGNsYXNzZXMgbm90IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQg
aW4KKyAgICAgICAgbm9uLXViZXJjb21wb3NpdG9yIG1vZGUuICBDdXJyZW50bHksIG9ubHkgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQgYW5kCisgICAgICAgIENDU3RyZWFtVmlkZW9EcmF3UXVhZCBhcmUg
bm9uLVBPRC4KKworICAgICAgICBUaGlzIGFwcHJvYWNoIGlzIHRoZSBiZXN0IEkndmUgZm91bmQg
c28gZmFyLCBzaW5jZSBpdCBwcmVzZXJ2ZXMgYWxsCisgICAgICAgIFdlYkNvcmUtZmFjaW5nIEFQ
SXMgYW5kIGF2b2lkcyB1bm5lY2Vzc2FyeSBjb2RlIGR1cGxpY2F0aW9uIChuZXcgcXVhZAorICAg
ICAgICB0eXBlcyBvciBtZW1iZXJzIGNhbiBiZSBhZGRlZCBieSBtb2RpZnlpbmcgb25seSBvbmUg
cGxhY2UpLiAgVGhlcmUKKyAgICAgICAgYWxzbyBzaG91bGQgbm90IGJlIGFuIHVucmVhc29uYWJs
ZSBhbW91bnQgb2YgY3VzdG9tIHNlcmlhbGl6ZXIgY29kZQorICAgICAgICByZXF1aXJlZC4KKwor
ICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JRdWFkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJDb21wb3NpdG9yUXVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFk
OjpxdWFkUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpxdWFkVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmxheWVyVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmxheWVyUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzY2lzc29yUmVjdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpvcGFjaXR5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcG9zaXRvclF1YWQ6Om5lZWRzQmxlbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZDo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpxdWFkVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6aXNEZWJ1Z1F1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZDo6bWF0ZXJpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6c2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1
YWQ6OnNldFNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckRyYXdRdWFkLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29t
cG9zaXRvclNvbGlkQ29sb3JRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNv
bGlkQ29sb3JRdWFkOjpjb2xvcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JUZXh0dXJlUXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6dXZSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkOjp0ZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yVGV4dHVyZVF1YWQ6OnByZW11bHRpcGxpZWRBbHBoYSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6ZmxpcHBlZCk6CisKIDIwMTItMDctMDMgIEFs
ZXggU2FraGFydGNob3VrICA8YWxleHN0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEF2b2lkIGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9zaXRv
ciBzdGFydHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM5MmVjYTBkYTczMjcxN2RmZjYzY2M4NDM4ZjdjYzYy
ZGUwMjJlYS4uMzllODEyZTZlZTVlY2NkNmFhNjk0YjUxZWFiMDZjMGQyZWQ4MjY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAxMi0wNy0wNCAgQWxleGFuZHJlIEVsaWFzICA8YWVs
aWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNb3ZlIGNvbXBvc2l0b3IgcXVh
ZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NTaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQsIENDU29saWRDb2xvckRyYXdRdWFkIGFuZAorICAgICAgICBDQ1RleHR1cmVRdWFkIHRv
IHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAgdG8gcHVzaGluZyB0aGVtCisg
ICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3IgdGhlIHViZXJjb21wb3NpdG9y
LgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxpemUgdGhlIGNsYXNzIGhpZXJh
cmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20gYXMgV2ViSW5wdXRFdmVudC4g
IEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQorICAgICAgICByZXF1aXJlbWVu
dHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBzaXplLCBhbmQgYSBwYWNraW5n
CisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUgZGF0YSBtZW1iZXJzIGFyZSBm
aW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBhCisgICAgICAgIGRlZmF1bHQg
Y29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgY2FuIG1haW50
YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5kIGNvbnZlbmllbnQgQVBJcyAo
YmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikgYXMgdGhlIG9yaWdpbmFsIGNs
YXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9uLCB0aGUgb3JpZ2luYWwgV2Vi
Q29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRvCisgICAgICAgIHRoZSBuZXcg
Y2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1YWRTdGF0ZSB3aWxsIGJlIHNl
cmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENfU1RSVUNUX1RSQUlUUyBtYWNy
bywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3VzdG9tCisgICAgICAgIHNlcmlh
bGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhlIHBvaW50ZXJzIGZyb20gcXVh
ZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAgICAgICAtIEkgY29udmVydGVk
IHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRlcmlhbENhc3QoKSBtZXRob2Rz
CisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2VzLiAgVGhhdCB3YXksIHRoZSBX
ZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24ndCBuZWVkIHRvIGtub3cgYWJv
dXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAgLSBRdWFkIGNsYXNzZXMgbm90
IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4KKyAgICAgICAgbm9uLXViZXJj
b21wb3NpdG9yIG1vZGUuICBDdXJyZW50bHksIG9ubHkgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5k
CisgICAgICAgIENDU3RyZWFtVmlkZW9EcmF3UXVhZCBhcmUgbm9uLVBPRC4KKworICAgICAgICBU
aGlzIGFwcHJvYWNoIGlzIHRoZSBiZXN0IEkndmUgZm91bmQgc28gZmFyLCBzaW5jZSBpdCBwcmVz
ZXJ2ZXMgYWxsCisgICAgICAgIFdlYkNvcmUtZmFjaW5nIEFQSXMgYW5kIGF2b2lkcyB1bm5lY2Vz
c2FyeSBjb2RlIGR1cGxpY2F0aW9uIChuZXcgcXVhZAorICAgICAgICB0eXBlcyBvciBtZW1iZXJz
IGNhbiBiZSBhZGRlZCBieSBtb2RpZnlpbmcgb25seSBvbmUgcGxhY2UpLiAgVGhlcmUKKyAgICAg
ICAgYWxzbyBzaG91bGQgbm90IGJlIGFuIHVucmVhc29uYWJsZSBhbW91bnQgb2YgY3VzdG9tIHNl
cmlhbGl6ZXIgY29kZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChOby1vcCByZWZhY3RvcmluZy4pCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6
OldlYkNvbXBvc2l0b3JRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6
Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6c2V0UXVh
ZFZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OnNpemUp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjpXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9y
UXVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0
ZXJpYWxDYXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JUZXh0dXJlUXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9z
aXRvclRleHR1cmVRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkOjpzZXROZWVkc0JsZW5kaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmg6CisgICAgICAgIChDQ0NoZWNrZXJib2FyZERyYXdR
dWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmg6CisgICAgICAg
IChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlRHJhd1F1YWQ6OkNDSU9TdXJmYWNlRHJhd1F1YWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaDoKKyAgICAgICAgKENDSU9TdXJmYWNlRHJhd1F1YWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2hhcmVkUXVhZFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU3RyZWFtVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU3RyZWFtVmlkZW9EcmF3
UXVhZDo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU3RyZWFt
VmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5o
OgorICAgICAgICAoQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVh
ZC5oOgorICAgICAgICAoQ0NUaWxlRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1lVVlZp
ZGVvRHJhd1F1YWQ6OkNDWVVWVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1lV
VlZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaDoK
KyAgICAgICAgKENDWVVWVmlkZW9EcmF3UXVhZCk6CisKIDIwMTItMDctMDMgIEFsZXggU2FraGFy
dGNob3VrICA8YWxleHN0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEF2b2lk
IGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9zaXRvciBzdGFydHVw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRmNjdmZWYyNzgyYzRjMDk4NGFhZTYxYTAw
NzA2MTVkNDJiYjgxMWYuLmJkZGUzNjAyYWU2NWM4OTIzZjg1MTdjMzcyODU3ZDcyNjNjOWRhNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDctMDQg
IEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1
bV0gTW92ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIEND
U2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkLCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCBhbmQKKyAg
ICAgICAgQ0NUZXh0dXJlUXVhZCB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBz
dGVwIHRvIHB1c2hpbmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkg
Zm9yIHRoZSB1YmVyY29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2Vy
aWFsaXplIHRoZSBjbGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFu
aXNtIGFzIFdlYklucHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhy
ZWUKKyAgICAgICAgcmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5p
bmcgc2l6ZSwgYW5kIGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2
YXRlIGRhdGEgbWVtYmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBh
bmQgYQorICAgICAgICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNl
IG9mIHRoYXQsIHdlIGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9u
IGFuZCBjb252ZW5pZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04pIGFzIHRoZSBvcmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNp
dGlvbiwgdGhlIG9yaWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRl
ZiB0bworICAgICAgICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFy
ZWRRdWFkU3RhdGUgd2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAg
SVBDX1NUUlVDVF9UUkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBB
IGN1c3RvbQorICAgICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWlu
IHRoZSBwb2ludGVycyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisK
KyAgICAgICAgLSBJIGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8g
bWF0ZXJpYWxDYXN0KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xh
c3Nlcy4gIFRoYXQgd2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRv
ZXNuJ3QgbmVlZCB0byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAg
ICAgIC0gUXVhZCBjbGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2Vk
IGluCisgICAgICAgIG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ3VycmVudGx5LCBvbmx5IEND
UmVuZGVyUGFzc0RyYXdRdWFkIGFuZAorICAgICAgICBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQgYXJl
IG5vbi1QT0QuCisKKyAgICAgICAgVGhpcyBhcHByb2FjaCBpcyB0aGUgYmVzdCBJJ3ZlIGZvdW5k
IHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFsbAorICAgICAgICBXZWJDb3JlLWZhY2luZyBB
UElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29kZSBkdXBsaWNhdGlvbiAobmV3IHF1YWQKKyAg
ICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUgYWRkZWQgYnkgbW9kaWZ5aW5nIG9ubHkgb25l
IHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28gc2hvdWxkIG5vdCBiZSBhbiB1bnJlYXNvbmFi
bGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVyIGNvZGUKKyAgICAgICAgcmVxdWlyZWQuCisK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChDQ0xheWVy
VGVzdENvbW1vbjo6dmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KToKKyAgICAgICAgKiB0ZXN0
cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29t
bW9uOjpURVNUKToKKwogMjAxMi0wNy0wMyAgQWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQXZvaWQgY2FsbGluZyBnZXRVbmlmb3Jt
TG9jYXRpb24/PygpIGluIHRoZSBjb21wb3NpdG9yIHN0YXJ0dXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkK
aW5kZXggN2Q1NjRmNzRiZDQxNTAwNWQ1ZWJiZTYzNmNjZDg5ODM2Yjc0MGViMy4uZDBjN2ZiMTQ0
ZjRmZTYzMGM4YmVlZjViOTFkMDZiNjM4ZDgyOTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAg
LTQxLDYgKzQxLDEwIEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2Fy
ZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29va2llLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhOTI1MTBmNmE2NjA5YTdj
MWEzYTQxMjg2MDU2ZGUxMmZmZmYzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgKQEAgLTAsMCArMSwxMjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRv
clF1YWRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicHVibGljL1dlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdB
Uk5JTkchIEFsbCBXZWJDb21wb3NpdG9yWFlaUXVhZCBjbGFzc2VzIG11c3QgcmVtYWluIFBPRHMg
KHBsYWluIG9sZCBkYXRhKS4KKy8vIFRoZXkgYXJlIGludGVuZGVkIHRvIGJlICJzZXJpYWxpemFi
bGUiIGJ5IGNvcHlpbmcgdGhlaXIgcmF3IGJ5dGVzLCBzbyB0aGV5CisvLyBtdXN0IG5vdCBjb250
YWluIGFueSBub24tYml0LWNvcHlhYmxlIG1lbWJlciB2YXJpYWJsZXMhCisvLworLy8gRnVydGhl
cm1vcmUsIHRoZSBjbGFzcyBtZW1iZXJzIG5lZWQgdG8gYmUgcGFja2VkIHNvIHRoZXkgYXJlIGFs
aWduZWQKKy8vIHByb3Blcmx5IGFuZCBkb24ndCBoYXZlIHBhZGRpbmdzL2dhcHMsIG90aGVyd2lz
ZSBtZW1vcnkgY2hlY2sgdG9vbHMKKy8vIGxpa2UgVmFsZ3JpbmQgd2lsbCBjb21wbGFpbiBhYm91
dCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB3aGVuCisvLyB0cmFuc2ZlcnJpbmcgdGhlc2Ug
Y2xhc3NlcyBvdmVyIHRoZSB3aXJlLgorI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKKy8vIFdlYkNv
bXBvc2l0b3JRdWFkIGlzIGEgYmFnIG9mIGRhdGEgdXNlZCBmb3IgZHJhd2luZyBhIHF1YWQuIEJl
Y2F1c2UgZGlmZmVyZW50CisvLyBtYXRlcmlhbHMgbmVlZCBkaWZmZXJlbnQgYml0cyBvZiBwZXIt
cXVhZCBkYXRhIHRvIHJlbmRlciwgY2xhc3NlcyB0aGF0IGRlcml2ZQorLy8gZnJvbSBXZWJDb21w
b3NpdG9yUXVhZCBzdG9yZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlaXIgZGVyaXZlZCBpbnN0YW5j
ZS4gVGhlIE1hdGVyaWFsCisvLyBlbnVtIGlzIHVzZWQgdG8gInNhZmVseSIgdXBjYXN0IHRvIHRo
ZSBkZXJpdmVkIGNsYXNzLgorY2xhc3MgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorICAg
IGVudW0gTWF0ZXJpYWwgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBDaGVja2VyYm9hcmQs
CisgICAgICAgIERlYnVnQm9yZGVyLAorICAgICAgICBJT1N1cmZhY2VDb250ZW50LAorICAgICAg
ICBSZW5kZXJQYXNzLAorICAgICAgICBUZXh0dXJlQ29udGVudCwKKyAgICAgICAgU29saWRDb2xv
ciwKKyAgICAgICAgVGlsZWRDb250ZW50LAorICAgICAgICBZVVZWaWRlb0NvbnRlbnQsCisgICAg
ICAgIFN0cmVhbVZpZGVvQ29udGVudCwKKyAgICB9OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVh
ZFJlY3Q7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtOyB9Cisg
ICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyVHJhbnNmb3JtOyB9CisgICAgV2ViQ29y
ZTo6SW50UmVjdCBsYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
bGF5ZXJSZWN0OyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBzY2lzc29yUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5zY2lzc29yUmVjdDsgfQorICAgIGZsb2F0IG9wYWNp
dHkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eTsgfQorICAgIC8v
IEZvciB0aGUgcHVycG9zZXMgb2YgYmxlbmRpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMg
b2YgdGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgV2ViQ29yZTo6SW50UmVjdCBvcGFxdWVSZWN0
KCkgY29uc3Q7CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c0JsZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMobV9xdWFkVmlzaWJsZVJlY3QpOyB9
CisgICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQorCisgICAgLy8g
QWxsb3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBkcmF3biB0byBtYWtlIGl0IHNtYWxs
ZXIuIFBhcmFtZXRlciBwYXNzZWQKKyAgICAvLyBpbiB3aWxsIGJlIGNsaXBwZWQgdG8gcXVhZFJl
Y3QoKS4KKyAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkVmlzaWJsZVJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3F1YWRWaXNpYmxlUmVjdDsgfQorICAgIGJvb2wgaXNEZWJ1Z1F1YWQoKSBjb25zdCB7IHJl
dHVybiBtX21hdGVyaWFsID09IERlYnVnQm9yZGVyOyB9CisjZW5kaWYKKworICAgIE1hdGVyaWFs
IG1hdGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsgfQorCisgICAgLy8gUmV0dXJu
cyB0cmFuc2ZlciBzaXplIG9mIHRoaXMgb2JqZWN0IGJhc2VkIG9uIHRoZSBkZXJpdmVkIGNsYXNz
IChieQorICAgIC8vIGxvb2tpbmcgYXQgdGhlIG1hdGVyaWFsIHR5cGUpLgorICAgIHVuc2lnbmVk
IHNpemUoKSBjb25zdDsKKworICAgIGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlOyB9Cisg
ICAgdm9pZCBzZXRTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlKSB7IG1fc2hhcmVkUXVhZFN0YXRlID0gc2hhcmVkUXVhZFN0
YXRlOyB9CisKK3Byb3RlY3RlZDoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJD
b21wb3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgTWF0ZXJp
YWwsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyNlbmRpZgorCisgICAgLy8gU3RvcmVzIHN0
YXRlIGNvbW1vbiB0byBhIGxhcmdlIGJ1bmRsZSBvZiBxdWFkczsga2VwdCBzZXBhcmF0ZSBmb3Ig
bWVtb3J5CisgICAgLy8gZWZmaWNpZW5jeS4gVGhlcmUgaXMgc3BlY2lhbCB0cmVhdG1lbnQgdG8g
cmVjb25zdHJ1Y3QgdGhlc2UgcG9pbnRlcnMKKyAgICAvLyBkdXJpbmcgc2VyaWFsaXphdGlvbi4K
KyAgICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBtX3NoYXJlZFF1YWRTdGF0
ZTsKKworICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7CisgICAgV2ViUmVjdCBtX3F1YWRSZWN0Owor
ICAgIFdlYlJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisKKyAgICAvLyBCeSBkZWZhdWx0LCB0aGUg
c2hhcmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHF1YWQgaXMK
KyAgICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3Zl
cnJpZGUgd2l0aCB0aGVzZQorICAgIC8vIHZhcmlhYmxlcy4KKyAgICBib29sIG1fcXVhZE9wYXF1
ZTsKKyAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMg
cmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQg
YWJvdmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1
bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUuCisgICAgV2ViUmVjdCBtX29w
YXF1ZVJlY3Q7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWMxN2MyOGNiOWU2ZDU5YjkxODIyNjhl
YzQ5Y2Q0MjhjMWQzYzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZV9oCisjZGVmaW5l
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlIHsKK3B1
YmxpYzoKKyAgICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgV2ViQ29tcG9zaXRvclF1YWRzIHNob3Vs
ZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRU
cmFuc2Zvcm07CisgICAgLy8gVGhlIHRyYW5zZm9ybSB0aGF0IGxheWVyUmVjdCBzaG91bGQgYmUg
dHJhbnNmb3JtZWQgd2l0aC4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5z
Zm9ybTsKKyAgICBXZWJSZWN0IGxheWVyUmVjdDsKKyAgICBXZWJSZWN0IHNjaXNzb3JSZWN0Owor
ICAgIGZsb2F0IG9wYWNpdHk7CisgICAgYm9vbCBvcGFxdWU7CisKKyAgICBXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGUoY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgbGF5
ZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpOworICAgIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUoY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgbGF5
ZXJSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpOworICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNv
bnN0OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTliMjQ2MjFjOTY0ODE0MWEzNDBlN2FlYjZlNmY2MDQ1YzM2N2ZkYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9z
aXRvclNvbGlkQ29sb3JRdWFkLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29tcG9zaXRvclNvbGlkQ29sb3JRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclNvbGlkQ29s
b3JRdWFkX2gKKworI2luY2x1ZGUgIlNrQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9y
UXVhZC5oIgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNwcmFnbWEgcGFjayhwdXNo
LCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQgOiBwdWJsaWMgV2ViQ29t
cG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZD4gY3JlYXRlKGNvbnN0
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
U2tDb2xvcik7CisjZW5kaWYKKworICAgIFNrQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2NvbG9yOyB9OworCisgICAgc3RhdGljIGNvbnN0IFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKik7Citwcml2YXRlOgorI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZChj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFNrQ29sb3IpOworI2VuZGlmCisKKyAgICBTa0NvbG9yIG1fY29sb3I7Cit9OworCisjcHJh
Z21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWJlNmZkM2U2ZDMxODI2ZjI1MTJhODAyNjM3Mjc5ZjQzMjcyNjA2MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkX2gKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2VuZGlmCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvclF1YWQuaCIKKyNpbmNs
dWRlICJXZWJGbG9hdFJlY3QuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJh
Z21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIDogcHVi
bGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IGNyZWF0
ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOworICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQorI2VuZGlmCisK
KyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQor
ICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlw
bGllZEFscGhhOyB9CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVk
OyB9CisKKyAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdCBX
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9y
UXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgYm9v
bCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBXZWJGbG9hdFJlY3QgbV91dlJlY3Q7CisgICAg
Ym9vbCBtX2ZsaXBwZWQ7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGM3MzMyZDIwM2MxZmRhZGE5YjAxNWUxNzM5YmUzMWViY2RjZGNl
NjQuLmQ5OTU0Nzg0NWY3OWI4NGQ1MWE2MWY3ZDg1NDE5NTA5ZDJmNzRhM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTgxODksNiArODE4OSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJBdWRpb0J1cy5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclF1YWQu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJEYXRhLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcCcs
CkBAIC04MjkxLDcgKzgyOTUsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJj
ZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0ZvbnRBdGxhcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRm9udEF0bGFzLmgnLApAQCAtODM2NCwxNyArODM2NywxNCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdz
LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVk
UXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1W
aWRlb0RyYXdRdWFkLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjc4NDE4Y2FmODIwYzI2
NjUyMTE1YjM1NDRlYTgzMGE3ZTRhODE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAKQEAgLTAs
MCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJwdWJsaWMv
V2ViQ29tcG9zaXRvclF1YWQuaCIKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJw
dWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmgiCisjaW5jbHVkZSAicHVibGljL1dl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbXBvc2l0b3JRdWFkOjpXZWJDb21wb3NpdG9yUXVh
ZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIE1h
dGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAgICA6IG1fc2hhcmVk
UXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKKyAgICAsIG1fbWF0ZXJpYWwobWF0ZXJpYWwpCisg
ICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQorICAgICwgbV9xdWFkVmlzaWJsZVJlY3QocXVhZFJl
Y3QpCisgICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKKyAgICAsIG1fbmVlZHNCbGVuZGluZyhmYWxz
ZSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOworICAgIEFTU0VSVChtX21hdGVy
aWFsICE9IEludmFsaWQpOworfQorCitJbnRSZWN0IFdlYkNvbXBvc2l0b3JRdWFkOjpvcGFxdWVS
ZWN0KCkgY29uc3QKK3sKKyAgICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7CisgICAgaWYgKG1fc2hhcmVkUXVhZFN0YXRlLT5vcGFxdWUgJiYgbV9xdWFkT3Bh
cXVlKQorICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICByZXR1cm4gbV9vcGFxdWVSZWN0
OworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3Qg
SW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQoreworICAgIEludFJlY3QgaW50ZXJzZWN0aW9uID0g
cXVhZFZpc2libGVSZWN0OworICAgIGludGVyc2VjdGlvbi5pbnRlcnNlY3QobV9xdWFkUmVjdCk7
CisgICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBpbnRlcnNlY3Rpb247Cit9CisKK3Vuc2lnbmVkIFdl
YkNvbXBvc2l0b3JRdWFkOjpzaXplKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1hdGVyaWFsKCkp
IHsKKyAgICBjYXNlIFRleHR1cmVDb250ZW50OgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZCk7CisgICAgY2FzZSBTb2xpZENvbG9yOgorICAgICAgICByZXR1
cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk7CisKKyAgICBjYXNlIENoZWNr
ZXJib2FyZDoKKyAgICBjYXNlIERlYnVnQm9yZGVyOgorICAgIGNhc2UgVGlsZWRDb250ZW50Ogor
ICAgIGNhc2UgUmVuZGVyUGFzczoKKyAgICBjYXNlIElPU3VyZmFjZUNvbnRlbnQ6CisgICAgY2Fz
ZSBZVVZWaWRlb0NvbnRlbnQ6CisgICAgY2FzZSBTdHJlYW1WaWRlb0NvbnRlbnQ6CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3Np
dG9yUXVhZCk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmY4ODMwN2ExODg1Y2YyODUyMjZkNWFmNTdj
MDlmNWUxODJiYjgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcApAQCAtMCww
ICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAicHVibGlj
L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaCIKKworI2luY2x1ZGUgIkZsb2F0UXVhZC5o
IgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKKwordXNpbmcgV2ViQ29yZTo6RmxvYXRRdWFk
OwordXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUoKQor
ICAgIDogb3BhY2l0eSgwKQorICAgICwgb3BhcXVlKG9wYXF1ZSkKK3sKK30KKworUGFzc093blB0
cjxXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlPiBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3JtLCBsYXllclJlY3Qs
IHNjaXNzb3JSZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKK30KKworV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZTo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJl
Y3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKKyAgICA6IHF1YWRU
cmFuc2Zvcm0ocXVhZFRyYW5zZm9ybSkKKyAgICAsIGxheWVyVHJhbnNmb3JtKGxheWVyVHJhbnNm
b3JtKQorICAgICwgbGF5ZXJSZWN0KGxheWVyUmVjdCkKKyAgICAsIHNjaXNzb3JSZWN0KHNjaXNz
b3JSZWN0KQorICAgICwgb3BhY2l0eShvcGFjaXR5KQorICAgICwgb3BhcXVlKG9wYXF1ZSkKK3sK
K30KKworYm9vbCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWdu
ZWRJbnRSZWN0KCkgY29uc3QKK3sKKyAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIg
d2luZG93IG9yIHByb2plY3Rpb24gbWF0cmljZXMuCisgICAgLy8gQXNzdW1lIHRoYXQgdGhleSdy
ZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRlZ2VyIHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgor
ICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOworICAgIEZsb2F0UXVhZCBxdWFkID0gV2ViQ29yZTo6
Q0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtLCBGbG9hdFF1YWQoSW50UmVjdChsYXll
clJlY3QpKSwgY2xpcHBlZCk7CisgICAgcmV0dXJuICFjbGlwcGVkICYmIHF1YWQuaXNSZWN0aWxp
bmVhcigpICYmIHF1YWQuYm91bmRpbmdCb3goKS5pc0V4cHJlc3NpYmxlQXNJbnRSZWN0KCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NzcyZDc5ZWNjOGQ3MDZmYzBlMGMxYjNjM2QxMmEzMDFkNDdiOGJkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJwdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29s
b3JRdWFkLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc093blB0cjxXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ+IFdlYkNvbXBvc2l0
b3JTb2xpZENvbG9yUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tD
b2xvciBjb2xvcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvcikpOworfQorCitXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZChjb25z
dCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCisgICAgOiBXZWJDb21wb3Np
dG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yLCBx
dWFkUmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3IpCit7CisgICAgaWYgKFNrQ29sb3JHZXRBKG1f
Y29sb3IpIDwgMjU1KQorICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNlCisg
ICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OworfQorCitjb25zdCBXZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQqIFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0ZXJpYWxDYXN0
KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRl
cmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKj4ocXVhZCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
N2VlMTYyNjNhY2Q5MzUzMjU1MzM0YTBiZjFlMGQwMjc1ODc5ZjE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0
cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBl
ZCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwg
dXZSZWN0LCBmbGlwcGVkKSk7Cit9CisKK1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQg
dGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1f
dGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRp
cGxpZWRBbHBoYSkKKyAgICAsIG1fdXZSZWN0KHV2UmVjdCkKKyAgICAsIG1fZmxpcHBlZChmbGlw
cGVkKQoreworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6c2V0TmVlZHNCbGVu
ZGluZygpCit7CisgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKK30KKworY29uc3QgV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkKiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1hdGVyaWFsQ2Fz
dChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChx
dWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCo+KHF1
YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBk
ZGQ3ZDUxNTMzZTVlODI4MGUwY2JhZDAzYTM4MjRhMGMwNGFmZWRhLi40YjU0ZmU0NjUwMzVhOGUw
ZTMxYzNkYmQxOWJhYTE4YmQyY2NmNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKQEAgLTQ4LDIzICs0OCwxNCBAQAogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVV
cGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NJ
T1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ1Nl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUg
ImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJj
Yy9DQ1RpbGVEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKLSNp
bmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmlkZW9GcmFtZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMzcyLDcgKzM2Myw3IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRl
clBhc3MsIGNvbnN0CiAgICAgICAgIGRyYXdRdWFkKGl0LT5nZXQoKSk7CiB9CiAKLXZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQordm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9z
aXRvclF1YWQqIHF1YWQpCiB7CiAgICAgSW50UmVjdCBzY2lzc29yUmVjdCA9IHF1YWQtPnNjaXNz
b3JSZWN0KCk7CiAKQEAgLTM4OCwzNSArMzc5LDM1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQogICAgICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAg
ICBzd2l0Y2ggKHF1YWQtPm1hdGVyaWFsKCkpIHsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkludmFs
aWQ6CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJbnZhbGlkOgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdR
dWFkOjpDaGVja2VyYm9hcmQ6Ci0gICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKHF1YWQtPnRv
Q2hlY2tlcmJvYXJkRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JR
dWFkOjpDaGVja2VyYm9hcmQ6CisgICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKENDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ0NEcmF3UXVhZDo6RGVidWdCb3JkZXI6Ci0gICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1
YWQocXVhZC0+dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXI6CisgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQo
Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OklPU3VyZmFjZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdJ
T1N1cmZhY2VRdWFkKHF1YWQtPnRvSU9TdXJmYWNlRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50OgorICAgICAgICBkcmF3SU9T
dXJmYWNlUXVhZChDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OlJlbmRlclBhc3M6Ci0gICAgICAgIGRy
YXdSZW5kZXJQYXNzUXVhZChxdWFkLT50b1JlbmRlclBhc3NEcmF3UXVhZCgpKTsKKyAgICBjYXNl
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlJlbmRlclBhc3M6CisgICAgICAgIGRyYXdSZW5k
ZXJQYXNzUXVhZChDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yOgotICAgICAgICBk
cmF3U29saWRDb2xvclF1YWQocXVhZC0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSk7CisgICAgY2Fz
ZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yOgorICAgICAgICBkcmF3U29s
aWRDb2xvclF1YWQoV2ViS2l0OjpXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6Om1hdGVyaWFs
Q2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6U3RyZWFt
VmlkZW9Db250ZW50OgotICAgICAgICBkcmF3U3RyZWFtVmlkZW9RdWFkKHF1YWQtPnRvU3RyZWFt
VmlkZW9EcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlN0
cmVhbVZpZGVvQ29udGVudDoKKyAgICAgICAgZHJhd1N0cmVhbVZpZGVvUXVhZChDQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ0NEcmF3UXVhZDo6VGV4dHVyZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdUZXh0dXJlUXVhZChx
dWFkLT50b1RleHR1cmVEcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRv
clF1YWQ6OlRleHR1cmVDb250ZW50OgorICAgICAgICBkcmF3VGV4dHVyZVF1YWQoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50OgotICAgICAgICBkcmF3VGls
ZVF1YWQocXVhZC0+dG9UaWxlRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JRdWFkOjpUaWxlZENvbnRlbnQ6CisgICAgICAgIGRyYXdUaWxlUXVhZChDQ1RpbGVEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0Ry
YXdRdWFkOjpZVVZWaWRlb0NvbnRlbnQ6Ci0gICAgICAgIGRyYXdZVVZWaWRlb1F1YWQocXVhZC0+
dG9ZVVZWaWRlb0RyYXdRdWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVh
ZDo6WVVWVmlkZW9Db250ZW50OgorICAgICAgICBkcmF3WVVWVmlkZW9RdWFkKENDWVVWVmlkZW9E
cmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA2MjVlODJmMDg4ZTA3MjE1MmVl
ZGJjYzY0OGNiYzg1MjllZmM1YTE4Li5lOWI5NTRkZmI2NTY4N2EwM2U4MTgzMGU5OTRlODhhNDIy
NzMzZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcs
MTYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1
cmVDb3BpZXIuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKKyNpbmNs
dWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJl
ci5oIgorI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQu
aCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDWVVWVmlk
ZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNDYsMTYgKzU1LDYgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNs
YXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKLWNsYXNzIENDRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lP
U3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ7Ci1jbGFzcyBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZDsKLWNsYXNzIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIEND
VGV4dHVyZURyYXdRdWFkOwotY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVv
RHJhd1F1YWQ7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7CiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsK
IGNsYXNzIFNjb3BlZEVuc3VyZUZyYW1lYnVmZmVyQWxsb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKaW5kZXggYWFlMDMzNTE0YTY4NDZhYjlmNGNi
MWZjYjFiOTYxNThmZjJkMDIzZi4uNjg4ZjE5MmM1MGJkYjg4NzE2ZmNkNzAyZGFhMjAzMmU3ZWUx
ZmRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKQEAg
LTI3LDE2ICsyNywyNSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5o
IgogCit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NPd25QdHI8Q0NDaGVja2VyYm9hcmREcmF3UXVhZD4gQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQorUGFzc093blB0cjxDQ0NoZWNrZXJib2FyZERyYXdR
dWFkPiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0KSk7CiB9CiAKLUNDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCi0gICAgOiBDQ0RyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkKK0NDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0KQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBX
ZWJDb21wb3NpdG9yUXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkKIHsKIH0KIAorY29uc3Qg
Q0NDaGVja2VyYm9hcmREcmF3UXVhZCogQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJU
KHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OkNoZWNrZXJib2FyZCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqPihxdWFk
KTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgKaW5k
ZXggMjdmOGM1NmJkNDljNDVlMzA1NWEzZmE3Y2I2ZTdhNzI1ZTVmNDNmMS4uMmI5ODVhOGUzNTNh
OTQ2MmUwMTdiMGRkZGJiNjJjMGVjMTE4ZmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaApAQCAtMjYsMTggKzI2LDE5IEBACiAjaWZuZGVmIENDQ2hlY2tlcmJv
YXJkRHJhd1F1YWRfaAogI2RlZmluZSBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gKIAotI2luY2x1
ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitjbGFz
cyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkIDogcHVibGljIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1
YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0NoZWNrZXJib2FyZERyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYpOwogCisgICAg
c3RhdGljIGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
Q0NDaGVja2VyYm9hcmREcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAppbmRleCAxNTI3YzQ3YzU1NzZmOTZhYzdmMzk5OWNjMDdh
MWQ1MGQxM2ZiNjdlLi5mZWJjZjBjMTc5YmNjNTBkNTE1ZDQzNzQyYjY3YjZiNGFmZDlkMGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAKQEAgLTI3LDE1ICsy
NywxNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAKK3VzaW5n
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ+IENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCitQYXNzT3duUHRyPENDRGVi
dWdCb3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgY29sb3IsIHdpZHRoKSk7CiB9CiAKLUNDRGVidWdCb3JkZXJEcmF3UXVhZDo6Q0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCi0g
ICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6RGVidWdCb3JkZXIs
IHF1YWRSZWN0KQorQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQo
Y29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCisg
ICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFk
OjpEZWJ1Z0JvcmRlciwgcXVhZFJlY3QpCiAgICAgLCBtX2NvbG9yKGNvbG9yKQogICAgICwgbV93
aWR0aCh3aWR0aCkKIHsKQEAgLTQ0LDQgKzQ2LDEwIEBAIENDRGVidWdCb3JkZXJEcmF3UXVhZDo6
Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
CiAgICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7CiB9CiAKK2NvbnN0IENDRGVidWdCb3Jk
ZXJEcmF3UXVhZCogQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJp
YWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXIpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqPihxdWFkKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaAppbmRleCBlYTFjZjg0NzYwNDFkMWIx
NzJlNmMwMjZjN2Y3ODYyODFhY2U0NGY0Li5hODBmNWU5Njg1OWRlZDc2OTM1OTcwNGUwMTFhOGUz
NzM0OGVlOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaApAQCAt
MjcsMjEgKzI3LDIyIEBACiAjZGVmaW5lIENDRGVidWdCb3JkZXJEcmF3UXVhZF9oCiAKICNpbmNs
dWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgInB1
YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkIDogcHVi
bGljIENDRHJhd1F1YWQgeworY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkIDogcHVibGljIFdl
YktpdDo6V2ViQ29tcG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDRGVi
dWdCb3JkZXJEcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NEZWJ1
Z0JvcmRlckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgU2tDb2xvciwgaW50IHdpZHRoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvciwgaW50IHdpZHRoKTsKIAogICAg
IFNrQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9OwogICAgIGludCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KIAorICAgIHN0YXRpYyBjb25zdCBDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JR
dWFkKik7CiBwcml2YXRlOgotICAgIENDRGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOworICAgIEND
RGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvciwgaW50IHdpZHRoKTsKIAogICAgIFNrQ29s
b3IgbV9jb2xvcjsKICAgICBpbnQgbV93aWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY1NjIxZGI1MzZkZGE1Zjk1ZjI1YjAzYjcyYzFm
MmI5ZjYxODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLQotI2luY2x1ZGUgImNjL0NDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQu
aCIKLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
IgotI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0ND
VGV4dHVyZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLSNpbmNs
dWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1D
Q0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKLSAgICA6
IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKLSAgICAsIG1fbWF0ZXJpYWwobWF0
ZXJpYWwpCi0gICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQotICAgICwgbV9xdWFkVmlzaWJsZVJl
Y3QocXVhZFJlY3QpCi0gICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKLSAgICAsIG1fbmVlZHNCbGVu
ZGluZyhmYWxzZSkKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOwotICAgIEFTU0VS
VChtX21hdGVyaWFsICE9IEludmFsaWQpOwotfQotCi1JbnRSZWN0IENDRHJhd1F1YWQ6Om9wYXF1
ZVJlY3QoKSBjb25zdAotewotICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKLSAgICAgICAgcmV0dXJu
IEludFJlY3QoKTsKLSAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYgbV9x
dWFkT3BhcXVlKQotICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKLSAgICByZXR1cm4gbV9vcGFx
dWVSZWN0OwotfQotCi12b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJ
bnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCi17Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBxdWFk
VmlzaWJsZVJlY3Q7Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fcXVhZFJlY3Qp
OwotfQotCi1jb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0NoZWNr
ZXJib2FyZERyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBDaGVj
a2VyYm9hcmQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJib2FyZERy
YXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogQ0NEcmF3
UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRl
cmlhbCA9PSBEZWJ1Z0JvcmRlcik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDRGVi
dWdCb3JkZXJEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFk
KiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFjZURyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9tYXRlcmlhbCA9PSBJT1N1cmZhY2VDb250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1JlbmRlclBh
c3NEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdAotewot
ICAgIEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclBhc3MpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25z
dAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFNvbGlkQ29sb3IpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25z
dCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU3RyZWFtVmlkZW9EcmF3UXVh
ZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gU3RyZWFtVmlkZW9Db250ZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKj4o
dGhpcyk7Ci19Ci0KLWNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1RleHR1
cmVEcmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVGV4dHVyZUNv
bnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCo+
KHRoaXMpOwotfQotY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURyYXdR
dWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBUaWxlZENvbnRlbnQpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RpbGVEcmF3UXVhZCo+KHRoaXMpOwotfQot
Ci1jb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvWVVWVmlkZW9EcmF3UXVh
ZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gWVVWVmlkZW9Db250ZW50KTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKj4odGhpcyk7
Ci19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDc1NmI2ODAzNmRkNjYzNzdlNDUxZDJl
MTcyMGE4YWE3NGE4ZjEwZTAuLmEyZWE1Yzk0ZTNhZWNlYzk2ODBkZjI2ZjFhY2IzNGZlYWJkZDk0
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTI2LDkxICsyNiwxMCBAQAogI2lmbmRlZiBDQ0Ry
YXdRdWFkX2gKICNkZWZpbmUgQ0NEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1
YWRTdGF0ZS5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7Ci1jbGFzcyBD
Q0RlYnVnQm9yZGVyRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3Mg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQ7Ci1jbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKLWNsYXNz
IENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIENDVGV4dHVyZURyYXdRdWFkOwotY2xhc3Mg
Q0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQ7Ci0KLS8vIENDRHJhd1F1
YWQgaXMgYSBiYWcgb2YgZGF0YSB1c2VkIGZvciBkcmF3aW5nIGEgcXVhZC4gQmVjYXVzZSBkaWZm
ZXJlbnQKLS8vIG1hdGVyaWFscyBuZWVkIGRpZmZlcmVudCBiaXRzIG9mIHBlci1xdWFkIGRhdGEg
dG8gcmVuZGVyLCBjbGFzc2VzIHRoYXQgZGVyaXZlCi0vLyBmcm9tIENDRHJhd1F1YWQgc3RvcmUg
YWRkaXRpb25hbCBkYXRhIGluIHRoZWlyIGRlcml2ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlhbAot
Ly8gZW51bSBpcyB1c2VkIHRvICJzYWZlbHkiIHVwY2FzdCB0byB0aGUgZGVyaXZlZCBjbGFzcy4K
LWNsYXNzIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDRHJhd1F1YWQp
OwotcHVibGljOgotICAgIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9xdWFkUmVjdDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+cXVhZFRy
YW5zZm9ybSgpOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJU
cmFuc2Zvcm0oKTsgfQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQotICAgIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPnNjaXNzb3JS
ZWN0KCk7IH0KLSAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgYmxlbmRpbmcs
IHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIGFyZSBvcGFxdWU/Ci0gICAg
SW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMobV9x
dWFkVmlzaWJsZVJlY3QpOyB9Ci0gICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJl
Y3QoKTsgfQotCi0gICAgLy8gQWxsb3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBkcmF3
biB0byBtYWtlIGl0IHNtYWxsZXIuIFBhcmFtZXRlciBwYXNzZWQKLSAgICAvLyBpbiB3aWxsIGJl
IGNsaXBwZWQgdG8gcXVhZFJlY3QoKS4KLSAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChjb25z
dCBJbnRSZWN0Jik7Ci0gICAgY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KLQotICAgIGVudW0gTWF0ZXJpYWwgewotICAg
ICAgICBJbnZhbGlkLAotICAgICAgICBDaGVja2VyYm9hcmQsCi0gICAgICAgIERlYnVnQm9yZGVy
LAotICAgICAgICBJT1N1cmZhY2VDb250ZW50LAotICAgICAgICBSZW5kZXJQYXNzLAotICAgICAg
ICBUZXh0dXJlQ29udGVudCwKLSAgICAgICAgU29saWRDb2xvciwKLSAgICAgICAgVGlsZWRDb250
ZW50LAotICAgICAgICBZVVZWaWRlb0NvbnRlbnQsCi0gICAgICAgIFN0cmVhbVZpZGVvQ29udGVu
dCwKLSAgICB9OwotCi0gICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25zdCB7IHJldHVybiBtX21h
dGVyaWFsOyB9Ci0gICAgYm9vbCBpc0RlYnVnUXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJp
YWwgPT0gRGVidWdCb3JkZXI7IH0KLQotICAgIGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQq
IHRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ0RlYnVnQm9yZGVy
RHJhd1F1YWQqIHRvRGVidWdCb3JkZXJEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDSU9T
dXJmYWNlRHJhd1F1YWQqIHRvSU9TdXJmYWNlRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCogdG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdDsKLSAgICBj
b25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogdG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdDsK
LSAgICBjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIHRvU3RyZWFtVmlkZW9EcmF3UXVhZCgp
IGNvbnN0OwotICAgIGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiB0b1RleHR1cmVEcmF3UXVhZCgp
IGNvbnN0OwotICAgIGNvbnN0IENDVGlsZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNvbnN0
OwotICAgIGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogdG9ZVVZWaWRlb0RyYXdRdWFkKCkgY29u
c3Q7Ci0KLSAgICBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGU7IH0KLQotcHJvdGVjdGVkOgotICAgIENDRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBNYXRlcmlhbCwgY29uc3QgSW50UmVjdCYp
OwotCi0gICAgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIG1fc2hhcmVkUXVhZFN0YXRlOwotCi0g
ICAgTWF0ZXJpYWwgbV9tYXRlcmlhbDsKLSAgICBJbnRSZWN0IG1fcXVhZFJlY3Q7Ci0gICAgSW50
UmVjdCBtX3F1YWRWaXNpYmxlUmVjdDsKLQotICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBzaGFyZWQg
cXVhZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcXVhZCBpcwotICAgIC8v
IG9wYXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB3
aXRoIHRoZXNlCi0gICAgLy8gdmFyaWFibGVzLgotICAgIGJvb2wgbV9xdWFkT3BhcXVlOwotICAg
IGJvb2wgbV9uZWVkc0JsZW5kaW5nOwotCi0gICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlz
IGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQot
ICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3Bh
cXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4KLSAgICBJbnRSZWN0IG1fb3BhcXVlUmVj
dDsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCBDQ0RyYXdRdWFkOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAKaW5kZXgg
MmZkYjRlZmNiYWFjNjAwMjMyZGVlNGM0YjI2YzA5ODk2ZjMzNWVmNC4uM2FkOWI4Y2MyOWY2OGE5
M2RkYmI5MDc5YjE2MGI3YTkzMjNlYzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VE
cmF3UXVhZC5jcHAKQEAgLTI3LDE4ICsyNywyNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZh
Y2VEcmF3UXVhZC5oIgogCit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gQ0NJT1N1
cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VT
aXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCitQYXNzT3duUHRyPENDSU9TdXJmYWNl
RHJhd1F1YWQ+IENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFj
ZVRleHR1cmVJZCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSU9TdXJmYWNlRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgaW9TdXJmYWNlU2l6ZSwgaW9TdXJmYWNlVGV4
dHVyZUlkKSk7CiB9CiAKLUNDSU9TdXJmYWNlRHJhd1F1YWQ6OkNDSU9TdXJmYWNlRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFj
ZVRleHR1cmVJZCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFk
OjpJT1N1cmZhY2VDb250ZW50LCBxdWFkUmVjdCkKK0NDSU9TdXJmYWNlRHJhd1F1YWQ6OkNDSU9T
dXJmYWNlRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXpl
JiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCisgICAgOiBXZWJD
b21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZh
Y2VDb250ZW50LCBxdWFkUmVjdCkKICAgICAsIG1faW9TdXJmYWNlU2l6ZShpb1N1cmZhY2VTaXpl
KQogICAgICwgbV9pb1N1cmZhY2VUZXh0dXJlSWQoaW9TdXJmYWNlVGV4dHVyZUlkKQogewogfQog
Citjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlh
bENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NF
UlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6SU9TdXJmYWNlQ29udGVu
dCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqPihx
dWFkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oCmluZGV4IDI3
Zjg2M2VlNjEzMGMwOGM1MjUzMjNhMjIxNWQzNDFmOTllOGJhMDEuLjMzMTE5NjhjYjUzODIwMWQ1
MThkYTkzZTIyY2Y0NjdlMGE3ZDg4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdR
dWFkLmgKQEAgLTI2LDIxICsyNiwyMiBAQAogI2lmbmRlZiBDQ0lPU3VyZmFjZURyYXdRdWFkX2gK
ICNkZWZpbmUgQ0NJT1N1cmZhY2VEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFk
LmgiCisjaW5jbHVkZSAicHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0lPU3VyZmFj
ZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworY2xhc3MgQ0NJT1N1cmZhY2VEcmF3UXVh
ZCA6IHB1YmxpYyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDQ0lPU3VyZmFjZURyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxDQ0lPU3VyZmFjZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQg
aW9TdXJmYWNlVGV4dHVyZUlkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0lPU3VyZmFjZURy
YXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVk
IGlvU3VyZmFjZVRleHR1cmVJZCk7CiAKICAgICBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VTaXplOyB9CiAgICAgdW5zaWduZWQgaW9TdXJm
YWNlVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VUZXh0dXJlSWQ7IH0KIAor
ICAgIHN0YXRpYyBjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToKLSAgICBDQ0lPU3VyZmFjZURy
YXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7CisgICAg
Q0NJT1N1cmZhY2VEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5z
aWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKTsKIAogICAgIEludFNpemUgbV9pb1N1cmZhY2VTaXpl
OwogICAgIHVuc2lnbmVkIG1faW9TdXJmYWNlVGV4dHVyZUlkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
aW5kZXggMDBhMzUxYjIyZGI4NDRmN2M3OTdhODI5YzRkMTZhYmZhNjZkYTgwYS4uNDA1MjdlYmM2
Y2FkNzlhYjllYmU2ZmYyNGVjNTBkZTdjZDhjZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVy
U3VyZmFjZS5oIgorI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00OCw3ICs0OSw2
IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xh
c3MgQ0NRdWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5kZXJlcjsKLWNsYXNzIENDU2hhcmVkUXVhZFN0
YXRlOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApp
bmRleCBkZWU1NWJmN2Y2Y2ZlZjE5MjRiY2FiNTNjZGVlZWUxOWQ2OWUyOGFjLi44NTU2ZDY3MjYx
NzhlYTljYzkzOTMxZWU1ZTU1M2U3MjQwMzFjMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApA
QCAtMjcsMTYgKzI3LDE2IEBACiAjZGVmaW5lIENDUmVuZGVyUGFzc19oCiAKICNpbmNsdWRlICJT
a0NvbG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NEcmF3UXVhZDsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiAKIC8vIEEg
bGlzdCBvZiBDQ0RyYXdRdWFkIG9iamVjdHMsIHNvcnRlZCBpbnRlcm5hbGx5IGluIGZyb250LXRv
LWJhY2sgb3JkZXIuCiBjbGFzcyBDQ1F1YWRMaXN0IDogcHVibGljIFZlY3RvcjxPd25QdHI8Q0NE
cmF3UXVhZD4gPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKaW5k
ZXggOGRjNGZmNjZhMWM3MTczYmU3Mzc0YTYyNWRiOTljZjQwN2IxZDZlMy4uNmIzY2IxNjlkMDQ2
YzM2NTZmNjgyMGI1MjcxMmQyZGFjYTliN2JiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzc0RyYXdRdWFkLmNwcApAQCAtMjcsMTUgKzI3LDE3IEBACiAKICNpbmNsdWRlICJjYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oIgogCit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+
IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFz
cyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNr
Z3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKK1Bhc3NPd25QdHI8Q0NSZW5k
ZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGJvb2wgaXNS
ZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVk
IG1hc2tUZXh0dXJlSWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzLCBpc1JlcGxpY2Es
IGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkKSk7CiB9CiAKLUNDUmVu
ZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NS
ZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQotICAgIDogQ0NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0
KQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktp
dDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25l
ZCBtYXNrVGV4dHVyZUlkKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRl
LCBXZWJDb21wb3NpdG9yUXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3JlbmRl
clBhc3MocmVuZGVyUGFzcykKICAgICAsIG1faXNSZXBsaWNhKGlzUmVwbGljYSkKICAgICAsIG1f
ZmlsdGVycyhmaWx0ZXJzKQpAQCAtNDUsNCArNDcsMTAgQEAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6
OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3QKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzKTsKIH0KIAorY29uc3QgQ0NSZW5kZXJQYXNzRHJh
d1F1YWQqIENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9
PSBXZWJDb21wb3NpdG9yUXVhZDo6UmVuZGVyUGFzcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKj4ocXVhZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCmluZGV4IDNjYzZmMjYwNzFhMzNjMDIzMDZhZWFkOWUw
OGIwODczMzM0ZTMxZTguLjYxYzRmMDEzM2U1ZmJkM2E5ZTE0M2Q4NzVhZWE5NjIwNzE1ZjFlMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAjZGVmaW5lIENDUmVuZGVyUGFzc0Ry
YXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJwdWJsaWMv
V2ViQ29tcG9zaXRvclF1YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM0LDEwICszNCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUmVuZGVyUGFzczsKIAotY2xhc3MgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitjbGFzcyBDQ1JlbmRlclBhc3NE
cmF3UXVhZCA6IHB1YmxpYyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBib29sIGlzUmVw
bGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBt
YXNrVGV4dHVyZUlkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVh
ZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBib29sIGlzUmVwbGljYSwgY29uc3Qg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZp
bHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlk
KTsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyUGFzczsgfQogICAgIGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9p
c1JlcGxpY2E7IH0KQEAgLTQ2LDggKzQ2LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsg
fQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRl
cnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CiAKKyAgICBzdGF0aWMg
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFz
cyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRl
cnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNv
bnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBDQ1JlbmRlclBhc3MqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKTsKIAogICAgIGNv
bnN0IENDUmVuZGVyUGFzcyogbV9yZW5kZXJQYXNzOwogICAgIGJvb2wgbV9pc1JlcGxpY2E7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDAyOWUxZjYwNDQxNGNjZmViMTMwNThlZjRh
YWM4MTM3OWY5NTA4ZjQuLmE5Yjg4MTk3NDM3Y2VjMmJjNDFmZWRmYWIxZjkxNTFjNjg4ODIyNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxw
dWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDIsNyAr
NDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CiBjbGFz
cyBDQ1F1YWRDdWxsZXI7CiBjbGFzcyBDQ1JlbmRlclBhc3M7Ci1jbGFzcyBDQ1NoYXJlZFF1YWRT
dGF0ZTsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwog
Y2xhc3MgTWFuYWdlZFRleHR1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMDY4MWZmNWZhZmQyM2M1ODZjY2E3MWY5
ZTE0NzA1NjgyMTcxNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCi0K
LSNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCi0KLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDU2hhcmVkUXVhZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNm
b3JtLCBsYXllclJlY3QsIHNjaXNzb3JSZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKLX0KLQotQ0NT
aGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgc2Np
c3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQotICAgIDogbV9xdWFkVHJhbnNm
b3JtKHF1YWRUcmFuc2Zvcm0pCi0gICAgLCBtX2xheWVyVHJhbnNmb3JtKGxheWVyVHJhbnNmb3Jt
KQotICAgICwgbV9sYXllclJlY3QobGF5ZXJSZWN0KQotICAgICwgbV9zY2lzc29yUmVjdChzY2lz
c29yUmVjdCkKLSAgICAsIG1fb3BhY2l0eShvcGFjaXR5KQotICAgICwgbV9vcGFxdWUob3BhcXVl
KQotewotfQotCi1ib29sIENDU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRS
ZWN0KCkgY29uc3QKLXsKLSAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93
IG9yIHByb2plY3Rpb24gbWF0cmljZXMuCi0gICAgLy8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRo
b25vcm1hbCBhbmQgaGF2ZSBpbnRlZ2VyIHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgotICAgIGJv
b2wgY2xpcHBlZCA9IGZhbHNlOwotICAgIEZsb2F0UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6bWFw
UXVhZChxdWFkVHJhbnNmb3JtKCksIEZsb2F0UXVhZChsYXllclJlY3QoKSksIGNsaXBwZWQpOwot
ICAgIHJldHVybiAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5k
aW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aGFyZWRRdWFkU3RhdGUuaAppbmRleCA0NTQwYTA2Zjg0ZWU1MmRmYWM1ZGUzNTYwNDhlYmIxOGM1
OGRiNzJjLi43NjM4OWE2MGY5Y2ZkYjJhMTRkNWY0MTAzZmRkYTQ5N2QwMTA1ZjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJl
ZFF1YWRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKQEAgLTI2LDQwICsyNiwxMCBAQAogI2lmbmRlZiBD
Q1NoYXJlZFF1YWRTdGF0ZV9oCiAjZGVmaW5lIENDU2hhcmVkUXVhZFN0YXRlX2gKIAotI2luY2x1
ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgInB1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGUgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENDU2hhcmVkUXVhZFN0YXRlKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNv
bnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7Ci0K
LSAgICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgcXVhZHMgaW4gYSBDQ0RyYXdRdWFkIHNob3VsZCBi
ZSB0cmFuc2Zvcm1lZCB3aXRoLgotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3F1YWRUcmFuc2Zvcm07IH0K
LSAgICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgbGF5ZXJSZWN0KCkgc2hvdWxkIGJlIHRyYW5zZm9y
bWVkIHdpdGguCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJhbnNmb3JtOyB9Ci0gICAgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlY3Q7IH0KLSAg
ICBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJl
Y3Q7IH0KLQotICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0K
LSAgICBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KLSAgICBib29s
IGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBDQ1No
YXJlZFF1YWRTdGF0ZShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFk
VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRy
YW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29y
UmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOwotCi0gICAgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX3F1YWRUcmFuc2Zvcm07Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX2xheWVyVHJhbnNmb3JtOwotICAgIEludFJlY3QgbV9sYXllclJlY3Q7
Ci0gICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0OwotICAgIGZsb2F0IG1fb3BhY2l0eTsKLSAgICBi
b29sIG1fb3BhcXVlOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUgQ0NTaGFyZWRRdWFkU3RhdGU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJh
d1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NjY4MzY5YjY5YjcwOTZlYWMzMjVhMGY4MTQ5ZmY4MDAwZmViOWY3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBh
c3NPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1NvbGlkQ29sb3JEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvcikpOwot
fQotCi1DQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IFNrQ29sb3IgY29sb3IpCi0gICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3
UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotewotICAg
IGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkKLSAgICAgICAgbV9xdWFkT3BhcXVlID0g
ZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBtX29wYXF1ZVJlY3QgPSBxdWFkUmVjdDsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgKaW5kZXggODNlYTM0MDY2MTU3
MDEwZjBkMTI5MmU4ZTE1NjMzY2UyYTE3M2ViMS4uYTQxMzUyZmQ5MGIzZTcxNzYzNzNhN2QyZjZm
M2I1MDFjOTVhNjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oCkBA
IC0yNiwyNSArMjYsMTAgQEAKICNpZm5kZWYgQ0NTb2xpZENvbG9yRHJhd1F1YWRfaAogI2RlZmlu
ZSBDQ1NvbGlkQ29sb3JEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVk
ZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSAicHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU29saWRDb2xvckRyYXdRdWFkKTsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NvbGlkQ29sb3JEcmF3UXVhZD4gY3JlYXRlKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIFNrQ29sb3IpOwotCi0gICAg
U2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0KLXByaXZhdGU6Ci0g
ICAgQ0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgU2tDb2xvcik7Ci0KLSAgICBTa0NvbG9yIG1fY29sb3I7Ci19OwotCit0eXBlZGVm
IFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkIENDU29saWRDb2xvckRyYXdRdWFk
OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuY3Bw
CmluZGV4IDZhMWJhMjk5MjNmNmQwZTAzMTg2NWUzYTU0MmE4NGIxNDBlMDhhNGEuLjA3YmU5ODRi
MWZiYzEzODIzODU4NWVlZWVlNGQyMTVkNTU3NzAyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
dHJlYW1WaWRlb0RyYXdRdWFkLmNwcApAQCAtMjcsMTggKzI3LDI2IEBACiAKICNpbmNsdWRlICJj
Yy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKIAordXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDU3RyZWFtVmlkZW9E
cmF3UXVhZD4gQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KQorUGFzc093blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ+IENDU3RyZWFtVmlkZW9EcmF3UXVh
ZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlk
LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgdGV4dHVyZUlkLCBtYXRyaXgpKTsKIH0KIAotQ0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotICAgIDogQ0NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlN0cmVhbVZpZGVvQ29udGVudCwg
cXVhZFJlY3QpCitDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OkNDU3RyZWFtVmlkZW9EcmF3UXVhZChj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorICAgIDogV2ViQ29tcG9zaXRv
clF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFtVmlkZW9Db250
ZW50LCBxdWFkUmVjdCkKICAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKICAgICAsIG1fbWF0
cml4KG1hdHJpeCkKIHsKIH0KIAorY29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKiBDQ1N0cmVh
bVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JR
dWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0
b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqPihxdWFkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1N0cmVhbVZpZGVvRHJhd1F1YWQuaAppbmRleCAzMDM3MzQ4ZDM1NGY2ZWI3ZTk3OGE1NGU1Yzg3
YTZkNmQ0NjIwYjZlLi43MTMzMzIwNWY1ODk5MjA2MWIzNmEyY2E2ZjBjMWEzNmNkZTI1MWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1N0cmVhbVZpZGVvRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaApAQCAtMjYsMjIgKzI2LDIz
IEBACiAjaWZuZGVmIENDU3RyZWFtVmlkZW9EcmF3UXVhZF9oCiAjZGVmaW5lIENDU3RyZWFtVmlk
ZW9EcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSAicHVi
bGljL1dlYkNvbXBvc2l0b3JRdWFkLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0
aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVh
ZCB7CitjbGFzcyBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTdHJlYW1WaWRlb0RyYXdR
dWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1
YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNp
Z25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
dW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJ
ZDsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9CiAKKyAgICBzdGF0aWMgY29uc3QgQ0NTdHJlYW1W
aWRlb0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVh
ZCopOwogcHJpdmF0ZToKLSAgICBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKIAogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwogICAgIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9tYXRyaXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVh
ZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYmNhOTVmYmU4ZTYxODFkNjM5
MjYxOTEzZDE0ZGUxMmIyOWM5ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlRHJhd1F1YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFk
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1RleHR1cmVEcmF3UXVh
ZD4gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlk
LCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wg
ZmxpcHBlZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGV4dHVyZURyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1
dlJlY3QsIGZsaXBwZWQpKTsKLX0KLQotQ0NUZXh0dXJlRHJhd1F1YWQ6OkNDVGV4dHVyZURyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhh
LCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQotICAgIDogQ0NEcmF3UXVh
ZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkK
LSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhh
KHByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAsIG1fdXZSZWN0KHV2UmVjdCkKLSAgICAsIG1fZmxp
cHBlZChmbGlwcGVkKQotewotfQotCi12b2lkIENDVGV4dHVyZURyYXdRdWFkOjpzZXROZWVkc0Js
ZW5kaW5nKCkKLXsKLSAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlRHJhd1F1YWQuaAppbmRleCBhNGJhZWZhMTMzYWY0YTAyMTNlOGU1ZjdmOTFk
YzkyYWEwZDQzYTg2Li4zYjg4N2FjMTk2YWMxOWU4MmIyNjcwYTczY2FjOTg1NzUyYWYzNWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgKQEAgLTI2LDMyICsyNiwxMCBAQAogI2lm
bmRlZiBDQ1RleHR1cmVEcmF3UXVhZF9oCiAjZGVmaW5lIENDVGV4dHVyZURyYXdRdWFkX2gKIAot
I2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgInB1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBDQ1RleHR1cmVEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFk
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RleHR1cmVEcmF3UXVhZCk7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJv
b2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlw
cGVkKTsKLQotICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuICBtX3RleHR1
cmVJZDsgfQotICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1f
cHJlbXVsdGlwbGllZEFscGhhOyB9Ci0gICAgRmxvYXRSZWN0IHV2UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXZSZWN0OyB9Ci0gICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlw
cGVkOyB9Ci0KLSAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKLQotcHJpdmF0ZToKLSAgICBD
Q1RleHR1cmVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
LCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxv
YXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7Ci0gICAgCi0gICAgdW5zaWduZWQgbV90ZXh0
dXJlSWQ7Ci0gICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKLSAgICBGbG9hdFJlY3QgbV91
dlJlY3Q7Ci0gICAgYm9vbCBtX2ZsaXBwZWQ7Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkIENDVGV4dHVyZURyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBiMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRj
OTRjNjk1NmIwMzkwLi42OGVmYWIyNDAyNDQ0ODc0MWZhNTI0NTM2MmRmODA4ZTQxMjBmMzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yNywxNSArMjcsMTcgQEAKIAogI2lu
Y2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRv
clF1YWQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVh
ZD4gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJl
T2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVy
LCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwg
Ym9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRyPENDVGlsZURy
YXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRl
eHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRv
cEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogfQogCi1DQ1RpbGVEcmF3UXVh
ZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwg
Y29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBz
d2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmln
aHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCitDQ1RpbGVEcmF3UXVh
ZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9p
bnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRl
eHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wg
dG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKKyAgICA6IFdl
YkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVk
Q29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCiAgICAgLCBt
X3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKICAgICAsIG1fdGV4dHVyZVNpemUodGV4dHVy
ZVNpemUpCkBAIC01MSw0ICs1MywxMCBAQCBDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSQogICAgIG1f
b3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7CiB9CiAKK2NvbnN0IENDVGlsZURyYXdRdWFkKiBDQ1Rp
bGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQq
IHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1
YWQ6OlRpbGVkQ29udGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDVGlsZURy
YXdRdWFkKj4ocXVhZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDMz
NTAxYTgwNmNmYWZmOTYwZjI0YzZkZDZmMWM3ODIwYTE1Nzg4YzUuLjcyZDY2YzM1NjhiMTNmNzQ2
MmQ0NDk1YjFmZjZhMWI5MDdiNjlhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAt
MjcsMTUgKzI3LDE1IEBACiAjZGVmaW5lIENDVGlsZURyYXdRdWFkX2gKIAogI2luY2x1ZGUgIkdy
YXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJw
dWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDVGlsZURyYXdRdWFkIDogcHVibGljIEND
RHJhd1F1YWQgeworY2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50
UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBv
aW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0
ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29s
IHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0
IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJ
bnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0Rp
bnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwg
Ym9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAog
ICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJl
SWQ7IH0KICAgICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlT2Zmc2V0OyB9CkBAIC01MCw4ICs1MCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBbnRp
YWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCBy
aWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgpOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgQ0NU
aWxlRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFk
Kik7CiBwcml2YXRlOgotICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwg
Y29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBz
d2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmln
aHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKyAgICBDQ1RpbGVEcmF3UXVhZChjb25zdCBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJl
U2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBs
ZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21F
ZGdlQUEpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2lu
dCBtX3RleHR1cmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcApp
bmRleCBhMmQ2MmJhNDRjODY1NzY2ZjlhYTI5OTUwZTQ4YTUyYWQyNjFlYjQ3Li40M2YyZTJmNmY1
NzhlOGQ0OGU4NjYxOTkwYWFiNzdhMzc4NjEzNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlk
ZW9EcmF3UXVhZC5jcHAKQEAgLTI3LDE5ICsyNywyNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NZVVZW
aWRlb0RyYXdRdWFkLmgiCiAKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVW
VmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpG
cmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQ
bGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQorUGFzc093
blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0
IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSkKIHsKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDWVVWVmlkZW9EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0
LCB5UGxhbmUsIHVQbGFuZSwgdlBsYW5lKSk7CiB9CiAKLUNDWVVWVmlkZW9EcmF3UXVhZDo6Q0NZ
VVZWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBs
YW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwg
Y29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQotICAgIDogQ0NEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OllVVlZpZGVvQ29udGVudCwgcXVhZFJl
Y3QpCitDQ1lVVlZpZGVvRHJhd1F1YWQ6OkNDWVVWVmlkZW9EcmF3UXVhZChjb25zdCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFu
ZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpCisgICAgOiBXZWJDb21wb3NpdG9yUXVh
ZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpZVVZWaWRlb0NvbnRlbnQsIHF1
YWRSZWN0KQogICAgICwgbV95UGxhbmUoeVBsYW5lKQogICAgICwgbV91UGxhbmUodVBsYW5lKQog
ICAgICwgbV92UGxhbmUodlBsYW5lKQogewogfQogCitjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQq
IENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9z
aXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29t
cG9zaXRvclF1YWQ6OllVVlZpZGVvQ29udGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IENDWVVWVmlkZW9EcmF3UXVhZCo+KHF1YWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVW
VmlkZW9EcmF3UXVhZC5oCmluZGV4IDBjZDc1OGM1YjBmMDAzZDY0NjVkYjkzMzZjYjk3ZWY1YjFm
MjQzY2YuLjg2MzAxNTViZTFmYTRmMmQyZGZhZmMzZTg2NzI3ZjRlNDM3YTIyYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlk
ZW9EcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCkBAIC0yNiwyMyArMjYsMjQgQEAKICNpZm5kZWYg
Q0NZVVZWaWRlb0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NZVVZWaWRlb0RyYXdRdWFkX2gKIAotI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgi
CisjaW5jbHVkZSAicHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1lVVlZpZGVvRHJh
d1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitjbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQgOiBw
dWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NZVVZWaWRlb0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1lVVlZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xh
eWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1lV
VlZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQ
bGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUs
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSk7CiAKICAgICBjb25z
dCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUoKSBjb25zdCB7IHJldHVybiBt
X3lQbGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdVBsYW5lOyB9CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1w
bDo6RnJhbWVQbGFuZSYgdlBsYW5lKCkgY29uc3QgeyByZXR1cm4gbV92UGxhbmU7IH0KIAorICAg
IHN0YXRpYyBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDWVVWVmlkZW9EcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZy
YW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBs
YW5lKTsKKyAgICBDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYg
dVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAg
ICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSBtX3lQbGFuZTsKICAgICBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lIG1fdVBsYW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCBiMzU4MTk3NTlkNDE0MjQ5N2Q4
Mjg1MjkwM2Q2MGU2NTUyMDBhNDUxLi42Y2M0ZDJjMzljYWNhMDI0MTlkYTQzYTU4NTFkZDZiNjli
N2RjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
ZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
ZXN0Q29tbW9uLmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIHZvaWQgdmVyaWZ5UXVhZHNFeGFjdGx5
Q292ZXJSZWN0KGNvbnN0IENDUXVhZExpc3QmIHF1YWRzLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBDQ0RyYXdRdWFkKiBxdWFkID0gcXVhZHNbaV0uZ2V0KCk7CisgICAgICAgIEludFJlY3QgcXVh
ZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwogCi0gICAgICAgIEVYUEVDVF9UUlVFKHJlY3QuY29u
dGFpbnMocXVhZC0+cXVhZFJlY3QoKSkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUocmVtYWluaW5nLmNvbnRhaW5zKHF1YWQtPnF1YWRSZWN0KCkpKSA8PCBxdWFkU3Ry
aW5nIDw8IGk7Ci0gICAgICAgIHJlbWFpbmluZy5zdWJ0cmFjdChSZWdpb24ocXVhZC0+cXVhZFJl
Y3QoKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShyZWN0LmNvbnRhaW5zKHF1YWRSZWN0KSkgPDwg
cXVhZFN0cmluZyA8PCBpOworICAgICAgICBFWFBFQ1RfVFJVRShyZW1haW5pbmcuY29udGFpbnMo
cXVhZFJlY3QpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgICAgIHJlbWFpbmluZy5zdWJ0cmFj
dChSZWdpb24ocXVhZFJlY3QpKTsKICAgICB9CiAKICAgICBFWFBFQ1RfVFJVRShyZW1haW5pbmcu
aXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IGI0NzY4NWRmNDRjMDE3YjVhOGU2
MGIxOWFmMzFmYmQ2YmZmM2ZjNmQuLmJlYjQ3MTViMDhmZmQwMDQxY2JjNTMxODUzMjE3MzhlODE3
NjM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNzgsNyArNzgsNyBAQCBURVNUKENDU29s
aWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQp
CiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0
KCkuc2l6ZSgpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS0+
dG9Tb2xpZENvbG9yRHJhd1F1YWQoKS0+Y29sb3IoKSwgdGVzdENvbG9yKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkQ3VsbGVyLnF1YWRMaXN0
KClbMF0uZ2V0KCkpLT5jb2xvcigpLCB0ZXN0Q29sb3IpOwogfQogCiBURVNUKENDU29saWRDb2xv
ckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RPcGFjaXR5SW5RdWFkKQpAQCAtMTAxLDcgKzEw
MSw3IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdE9wYWNp
dHlJblF1YWQpCiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVy
LnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKG9wYWNpdHksIHF1YWRDdWxs
ZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKS0+b3BhY2l0eSgpKTsKKyAg
ICBFWFBFQ1RfRVEob3BhY2l0eSwgQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0uZ2V0KCkpLT5vcGFjaXR5KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151346</attachid>
            <date>2012-07-09 16:21:08 -0700</date>
            <delta_ts>2012-07-09 19:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90582-20120709162108.patch</filename>
            <type>text/plain</type>
            <size>137586</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyOGJjZDU2NjJkMmRj
ODlkMmZlMTJiODJhNDQ4OGYyODkzYzgyM2NjLi44ZjJhNjc2YjA4YWFhZGFjYmY5NmE1N2Y4YTk0
NDk1NDg3ZjZjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMi0wNy0wNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIGNvbXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NT
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQsIGFuZCBhbGwgYnV0IHR3byBDQypEcmF3UXVhZAor
ICAgICAgICBjbGFzc2VzIHRvIHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAg
dG8gcHVzaGluZyB0aGVtCisgICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3Ig
dGhlIHViZXJjb21wb3NpdG9yLgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxp
emUgdGhlIGNsYXNzIGhpZXJhcmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20g
YXMgV2ViSW5wdXRFdmVudC4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQor
ICAgICAgICByZXF1aXJlbWVudHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBz
aXplLCBhbmQgYSBwYWNraW5nCisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUg
ZGF0YSBtZW1iZXJzIGFyZSBmaW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBh
CisgICAgICAgIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2Yg
dGhhdCwgd2UgY2FuIG1haW50YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5k
IGNvbnZlbmllbnQgQVBJcyAoYmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikg
YXMgdGhlIG9yaWdpbmFsIGNsYXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9u
LCB0aGUgb3JpZ2luYWwgV2ViQ29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRv
CisgICAgICAgIHRoZSBuZXcgY2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1
YWRTdGF0ZSB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENf
U1RSVUNUX1RSQUlUUyBtYWNybywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3Vz
dG9tCisgICAgICAgIHNlcmlhbGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhl
IHBvaW50ZXJzIGZyb20gcXVhZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAg
ICAgICAtIEkgY29udmVydGVkIHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRl
cmlhbENhc3QoKSBtZXRob2RzCisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiAgVGhhdCB3YXksIHRoZSBXZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24n
dCBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAg
LSBRdWFkIGNsYXNzZXMgbm90IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4K
KyAgICAgICAgbm9uLXViZXJjb21wb3NpdG9yIG1vZGUuICBDQ1JlbmRlclBhc3NEcmF3UXVhZCBh
bmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgIGFyZSBjdXJyZW50bHkgbm9uLVBPRCBhbmQg
SSBsZWZ0IHRoZW0gaW4gdGhlaXIgb3JpZ2luYWwgZmlsZXMuCisKKyAgICAgICAgVGhpcyBhcHBy
b2FjaCBpcyB0aGUgYmVzdCBJJ3ZlIGZvdW5kIHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFs
bAorICAgICAgICBXZWJDb3JlLWZhY2luZyBBUElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29k
ZSBkdXBsaWNhdGlvbiAobmV3IHF1YWQKKyAgICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUg
YWRkZWQgYnkgbW9kaWZ5aW5nIG9ubHkgb25lIHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28g
c2hvdWxkIG5vdCBiZSBhbiB1bnJlYXNvbmFibGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVy
IGNvZGUKKyAgICAgICAgcmVxdWlyZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclF1YWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpsYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzTGF5ZXJBeGlzQWxp
Z25lZEludFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzRGVidWdR
dWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6Om1hdGVyaWFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRTaGFyZWRRdWFkU3RhdGUpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckRyYXdRdWFkLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6Y29sb3IpOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnV2
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6dGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpwcmVtdWx0
aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
OmZsaXBwZWQpOgorCiAyMDEyLTA3LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIGEgV2ViS2l0OjpXZWIqIHdyYXBwZXIg
Zm9yIHRoZSBjYyBhbmltYXRpb24gY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI1MjVjZDZhMzhmYzc3
NmYwZTg0Zjc0ODA1ZGRmODI0MDAzMDM0YjguLjIwMGZmYjBjZTNlN2RmMzFkNzE4N2NlOTc5NTAz
MDQxNzhlYjVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTItMDctMDQgIEFs
ZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TW92ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIENDU2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkLCBhbmQgYWxsIGJ1dCB0d28gQ0MqRHJhd1F1YWQKKyAg
ICAgICAgY2xhc3NlcyB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBzdGVwIHRv
IHB1c2hpbmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkgZm9yIHRo
ZSB1YmVyY29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2VyaWFsaXpl
IHRoZSBjbGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIGFz
IFdlYklucHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhyZWUKKyAg
ICAgICAgcmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5pbmcgc2l6
ZSwgYW5kIGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2YXRlIGRh
dGEgbWVtYmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBhbmQgYQor
ICAgICAgICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNlIG9mIHRo
YXQsIHdlIGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9uIGFuZCBj
b252ZW5pZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJT04pIGFz
IHRoZSBvcmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNpdGlvbiwg
dGhlIG9yaWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRlZiB0bwor
ICAgICAgICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFyZWRRdWFk
U3RhdGUgd2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAgSVBDX1NU
UlVDVF9UUkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBBIGN1c3Rv
bQorICAgICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWluIHRoZSBw
b2ludGVycyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisKKyAgICAg
ICAgLSBJIGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8gbWF0ZXJp
YWxDYXN0KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xhc3Nlcy4g
IFRoYXQgd2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRvZXNuJ3Qg
bmVlZCB0byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAgICAgIC0g
UXVhZCBjbGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2VkIGluCisg
ICAgICAgIG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5k
IENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICBhcmUgY3VycmVudGx5IG5vbi1QT0QgYW5kIEkg
bGVmdCB0aGVtIGluIHRoZWlyIG9yaWdpbmFsIGZpbGVzLgorCisgICAgICAgIFRoaXMgYXBwcm9h
Y2ggaXMgdGhlIGJlc3QgSSd2ZSBmb3VuZCBzbyBmYXIsIHNpbmNlIGl0IHByZXNlcnZlcyBhbGwK
KyAgICAgICAgV2ViQ29yZS1mYWNpbmcgQVBJcyBhbmQgYXZvaWRzIHVubmVjZXNzYXJ5IGNvZGUg
ZHVwbGljYXRpb24gKG5ldyBxdWFkCisgICAgICAgIHR5cGVzIG9yIG1lbWJlcnMgY2FuIGJlIGFk
ZGVkIGJ5IG1vZGlmeWluZyBvbmx5IG9uZSBwbGFjZSkuICBUaGVyZQorICAgICAgICBhbHNvIHNo
b3VsZCBub3QgYmUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiBjdXN0b20gc2VyaWFsaXplciBj
b2RlCisgICAgICAgIHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vLW9wIHJl
ZmFjdG9yaW5nLikKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6V2ViQ29tcG9z
aXRvclF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJsZVJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnNldE5l
ZWRzQmxlbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaDoKKyAgICAgICAgKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3JkZXJE
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVy
aWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdC
b3JkZXJEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpDQ1N0
cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAg
ICAgIChDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVh
ZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAo
Q0NZVVZWaWRlb0RyYXdRdWFkKToKKwogMjAxMi0wNy0wOCAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZl
a2dhbGF0YWdlQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IHNob3VsZCBub3QgZ2VuZXJhdGUgc3RhdGVtZW50cyB3aXRoIG5vIGVm
ZmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3Mzg0OTQwNDcwYmZkMzI5MzRhN2M0
OTdkYTU5ZWQ1M2M1ZDRlNGIyLi40NWM0NjIwZWRkNDI0ZmVjZTYwNDY1MjIwNjRlYmIxMWVhZWVk
ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3
LTA0ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hy
b21pdW1dIE1vdmUgY29tcG9zaXRvciBxdWFkcyB0byBQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtb3Zl
cyBDQ1NoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZCwgYW5kIGFsbCBidXQgdHdvIENDKkRyYXdR
dWFkCisgICAgICAgIGNsYXNzZXMgdG8gdGhlIFdlYktpdCBuYW1lc3BhY2UsIGFzIGEgZmlyc3Qg
c3RlcCB0byBwdXNoaW5nIHRoZW0KKyAgICAgICAgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdW5kYXJ5
IGZvciB0aGUgdWJlcmNvbXBvc2l0b3IuCisKKyAgICAgICAgLSBUaGUgaW50ZW50IGlzIHRvIHNl
cmlhbGl6ZSB0aGUgY2xhc3MgaGllcmFyY2h5IHVzaW5nIHRoZSBzYW1lCisgICAgICAgIG1lY2hh
bmlzbSBhcyBXZWJJbnB1dEV2ZW50LiAgSW4gb3JkZXIgdG8gZG8gdGhpcywgdGhlcmUgYXJlIHRo
cmVlCisgICAgICAgIHJlcXVpcmVtZW50czogcHVyZSBQT0QgZGF0YSwgYSBtZXRob2QgcmV0dXJu
aW5nIHNpemUsIGFuZCBhIHBhY2tpbmcKKyAgICAgICAgcHJhZ21hLgorCisgICAgICAgIC0gUHJp
dmF0ZSBkYXRhIG1lbWJlcnMgYXJlIGZpbmUgd2l0aCB0aGlzIGtpbmQgb2Ygc2VyaWFsaXplciwg
YW5kIGEKKyAgICAgICAgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBub3QgbmVlZGVkLiAgQmVjYXVz
ZSBvZiB0aGF0LCB3ZSBjYW4gbWFpbnRhaW4KKyAgICAgICAgdGhlIHNhbWUgZW5jYXBzdWxhdGlv
biBhbmQgY29udmVuaWVudCBBUElzIChiZWhpbmQKKyAgICAgICAgV0VCS0lUX0lNUExFTUVOVEFU
SU9OKSBhcyB0aGUgb3JpZ2luYWwgY2xhc3Nlcy4gIFRvIGVhc2UgdGhlCisgICAgICAgIHRyYW5z
aXRpb24sIHRoZSBvcmlnaW5hbCBXZWJDb3JlIGhlYWRlcnMgc3RpbGwgZXhpc3QgYW5kIHR5cGVk
ZWYgdG8KKyAgICAgICAgdGhlIG5ldyBjbGFzc2VzLgorCisgICAgICAgIC0gSG93ZXZlciwgU2hh
cmVkUXVhZFN0YXRlIHdpbGwgYmUgc2VyaWFsaXplZCB1c2luZyB0aGUgbm9ybWFsCisgICAgICAg
IElQQ19TVFJVQ1RfVFJBSVRTIG1hY3JvLCBzbyBJIG1hZGUgaXRzIG1lbWJlcnMgcHVibGljLiAg
QSBjdXN0b20KKyAgICAgICAgc2VyaWFsaXplciAob24gcXVhZCBsaXN0cykgd2lsbCBtYWludGFp
biB0aGUgcG9pbnRlcnMgZnJvbSBxdWFkcyB0bworICAgICAgICBTaGFyZWRRdWFkU3RhdGVzLgor
CisgICAgICAgIC0gSSBjb252ZXJ0ZWQgdGhlIE1hdGVyaWFsIGNhc3RpbmcgbWVjaGFuaXNtIHRv
IG1hdGVyaWFsQ2FzdCgpIG1ldGhvZHMKKyAgICAgICAgbGl2aW5nIGluIHRoZSBkZXJpdmVkIGNs
YXNzZXMuICBUaGF0IHdheSwgdGhlIFdlYkNvbXBvc2l0b3JRdWFkIGhlYWRlcgorICAgICAgICBk
b2Vzbid0IG5lZWQgdG8ga25vdyBhYm91dCBhbGwgaXRzIGRlcml2ZWQgY2xhc3Nlcy4KKworICAg
ICAgICAtIFF1YWQgY2xhc3NlcyBub3QgeWV0IHRyYW5zaXRpb25lZCBjYW4gc3RpbGwgYmUgdXNl
ZCBpbgorICAgICAgICBub24tdWJlcmNvbXBvc2l0b3IgbW9kZS4gIENDUmVuZGVyUGFzc0RyYXdR
dWFkIGFuZCBDQ1lVVlZpZGVvRHJhd1F1YWQKKyAgICAgICAgYXJlIGN1cnJlbnRseSBub24tUE9E
IGFuZCBJIGxlZnQgdGhlbSBpbiB0aGVpciBvcmlnaW5hbCBmaWxlcy4KKworICAgICAgICBUaGlz
IGFwcHJvYWNoIGlzIHRoZSBiZXN0IEkndmUgZm91bmQgc28gZmFyLCBzaW5jZSBpdCBwcmVzZXJ2
ZXMgYWxsCisgICAgICAgIFdlYkNvcmUtZmFjaW5nIEFQSXMgYW5kIGF2b2lkcyB1bm5lY2Vzc2Fy
eSBjb2RlIGR1cGxpY2F0aW9uIChuZXcgcXVhZAorICAgICAgICB0eXBlcyBvciBtZW1iZXJzIGNh
biBiZSBhZGRlZCBieSBtb2RpZnlpbmcgb25seSBvbmUgcGxhY2UpLiAgVGhlcmUKKyAgICAgICAg
YWxzbyBzaG91bGQgbm90IGJlIGFuIHVucmVhc29uYWJsZSBhbW91bnQgb2YgY3VzdG9tIHNlcmlh
bGl6ZXIgY29kZQorICAgICAgICByZXF1aXJlZC4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJU
ZXN0Q29tbW9uLmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjp2ZXJpZnlRdWFkc0V4
YWN0bHlDb3ZlclJlY3QpOgorICAgICAgICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRl
c3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorCiAyMDEyLTA3LTA1
ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBDaHJvbWl1bSBnYXJkZW5pbmcuIFJvbGwgQ2hyb21pdW0gREVQUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0u
Z3lwaQppbmRleCBhNmIzNWZkOTM4ZThhMDg5MjdhNmNlMWNmOTc0NGQ3MWU0YzRhNjMyLi40NjVk
YzMxMmNkMTc0ZDVjZDdmZTMwNzA4MWVmNDBjMTdiNjM0MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQpAQCAtNDMsNiArNDMsMTUgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ2xp
cGJvYXJkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgnLAorICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oJywKKyAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaCcs
CisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgnLAorICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1W
aWRlb1F1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JU
ZXh0dXJlUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
clRpbGVRdWFkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5
ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVu
dC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tl
cmJvYXJkUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yQ2hlY2tlcmJvYXJkUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTAyYmJmZmE0MzI2MjdmOTRmMjVl
YzVlZGEyOTJmODk5ZDFiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWRfaAorI2Rl
ZmluZSBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21w
b3NpdG9yUXVhZC5oIgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNwcmFnbWEgcGFj
ayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCA6IHB1Ymxp
YyBXZWJDb21wb3NpdG9yUXVhZCB7CitwdWJsaWM6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ+IGNy
ZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOworI2VuZGlmCisKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJp
dmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9yQ2hlY2tl
cmJvYXJkUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworI2VuZGlmCit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzE4OWVlZDFm
MTM2OTRkOTI5NTk2NjIzODRjMDRiNzBiY2Q3YjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmgK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVy
UXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWRfaAorCisjaW5jbHVk
ZSAiU2tDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVi
bGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNrQ29sb3IsIGludCB3aWR0
aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
OyB9OworICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKworICAgIHN0
YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKiBtYXRlcmlhbENhc3QoY29u
c3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCisgICAgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChjb25zdCBXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNrQ29sb3IsIGludCB3
aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgbV9jb2xvcjsKKyAgICBpbnQgbV93aWR0aDsK
K307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VR
dWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWQ3ZWIxY2JkMDE0NDczMzQyODkxMDdiMjM2YWU5MWU0NGM1NGQy
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVkZSAi
V2ViU2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvcklPU3Vy
ZmFjZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpb1N1cmZhY2VT
aXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOworCisgICAgV2ViQ29yZTo6SW50U2l6
ZSBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VTaXplOyB9CisgICAg
dW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VU
ZXh0dXJlSWQ7IH0KKyNlbmRpZgorCisgICAgc3RhdGljIGNvbnN0IFdlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZh
dGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvcklPU3VyZmFj
ZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25l
ZCBpb1N1cmZhY2VUZXh0dXJlSWQpOworI2VuZGlmCisKKyAgICBXZWJTaXplIG1faW9TdXJmYWNl
U2l6ZTsKKyAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZVRleHR1cmVJZDsKK307CisKKyNwcmFnbWEg
cGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc4NjYzYTYyMzNkNDU5
YzhlNjUxNjJkYmU5NzkwYjJhNTI2YjQ4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaApAQCAtMCwwICsxLDEyMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclF1YWRfaAorI2RlZmluZSBXZWJDb21wb3Np
dG9yUXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXQVJOSU5H
ISBBbGwgV2ViQ29tcG9zaXRvclhZWlF1YWQgY2xhc3NlcyBtdXN0IHJlbWFpbiBQT0RzIChwbGFp
biBvbGQgZGF0YSkuCisvLyBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSAic2VyaWFsaXphYmxlIiBi
eSBjb3B5aW5nIHRoZWlyIHJhdyBieXRlcywgc28gdGhleQorLy8gbXVzdCBub3QgY29udGFpbiBh
bnkgbm9uLWJpdC1jb3B5YWJsZSBtZW1iZXIgdmFyaWFibGVzIQorLy8KKy8vIEZ1cnRoZXJtb3Jl
LCB0aGUgY2xhc3MgbWVtYmVycyBuZWVkIHRvIGJlIHBhY2tlZCBzbyB0aGV5IGFyZSBhbGlnbmVk
CisvLyBwcm9wZXJseSBhbmQgZG9uJ3QgaGF2ZSBwYWRkaW5ncy9nYXBzLCBvdGhlcndpc2UgbWVt
b3J5IGNoZWNrIHRvb2xzCisvLyBsaWtlIFZhbGdyaW5kIHdpbGwgY29tcGxhaW4gYWJvdXQgdW5p
bml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugd2hlbgorLy8gdHJhbnNmZXJyaW5nIHRoZXNlIGNsYXNz
ZXMgb3ZlciB0aGUgd2lyZS4KKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCisvLyBXZWJDb21wb3Np
dG9yUXVhZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRyYXdpbmcgYSBxdWFkLiBCZWNhdXNl
IGRpZmZlcmVudAorLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVyZW50IGJpdHMgb2YgcGVyLXF1YWQg
ZGF0YSB0byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUKKy8vIGZyb20gV2ViQ29tcG9zaXRv
clF1YWQgc3RvcmUgYWRkaXRpb25hbCBkYXRhIGluIHRoZWlyIGRlcml2ZWQgaW5zdGFuY2UuIFRo
ZSBNYXRlcmlhbAorLy8gZW51bSBpcyB1c2VkIHRvICJzYWZlbHkiIGRvd25jYXN0IHRvIHRoZSBk
ZXJpdmVkIGNsYXNzLgorY2xhc3MgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorICAgIGVu
dW0gTWF0ZXJpYWwgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBDaGVja2VyYm9hcmQsCisg
ICAgICAgIERlYnVnQm9yZGVyLAorICAgICAgICBJT1N1cmZhY2VDb250ZW50LAorICAgICAgICBS
ZW5kZXJQYXNzLAorICAgICAgICBUZXh0dXJlQ29udGVudCwKKyAgICAgICAgU29saWRDb2xvciwK
KyAgICAgICAgVGlsZWRDb250ZW50LAorICAgICAgICBZVVZWaWRlb0NvbnRlbnQsCisgICAgICAg
IFN0cmVhbVZpZGVvQ29udGVudCwKKyAgICB9OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFJl
Y3Q7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtOyB9CisgICAg
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyVHJhbnNmb3JtOyB9CisgICAgV2ViQ29yZTo6
SW50UmVjdCBsYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5
ZXJSZWN0OyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBzY2lzc29yUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5zY2lzc29yUmVjdDsgfQorICAgIGZsb2F0IG9wYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eTsgfQorICAgIC8vIEZv
ciB0aGUgcHVycG9zZXMgb2YgYmxlbmRpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2Yg
dGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgV2ViQ29yZTo6SW50UmVjdCBvcGFxdWVSZWN0KCkg
Y29uc3Q7CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Js
ZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMobV9xdWFkVmlzaWJsZVJlY3QpOyB9Cisg
ICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQorCisgICAgLy8gQWxs
b3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBkcmF3biB0byBtYWtlIGl0IHNtYWxsZXIu
IFBhcmFtZXRlciBwYXNzZWQKKyAgICAvLyBpbiB3aWxsIGJlIGNsaXBwZWQgdG8gcXVhZFJlY3Qo
KS4KKyAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkVmlzaWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3F1YWRWaXNpYmxlUmVjdDsgfQorICAgIGJvb2wgaXNEZWJ1Z1F1YWQoKSBjb25zdCB7IHJldHVy
biBtX21hdGVyaWFsID09IERlYnVnQm9yZGVyOyB9CisjZW5kaWYKKworICAgIE1hdGVyaWFsIG1h
dGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsgfQorCisgICAgLy8gUmV0dXJucyB0
cmFuc2ZlciBzaXplIG9mIHRoaXMgb2JqZWN0IGJhc2VkIG9uIHRoZSBkZXJpdmVkIGNsYXNzIChi
eQorICAgIC8vIGxvb2tpbmcgYXQgdGhlIG1hdGVyaWFsIHR5cGUpLgorICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdDsKKworICAgIGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlOyB9CisgICAg
dm9pZCBzZXRTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlKSB7IG1fc2hhcmVkUXVhZFN0YXRlID0gc2hhcmVkUXVhZFN0YXRl
OyB9CisKK3Byb3RlY3RlZDoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21w
b3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgTWF0ZXJpYWws
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyNlbmRpZgorCisgICAgLy8gU3RvcmVzIHN0YXRl
IGNvbW1vbiB0byBhIGxhcmdlIGJ1bmRsZSBvZiBxdWFkczsga2VwdCBzZXBhcmF0ZSBmb3IgbWVt
b3J5CisgICAgLy8gZWZmaWNpZW5jeS4gVGhlcmUgaXMgc3BlY2lhbCB0cmVhdG1lbnQgdG8gcmVj
b25zdHJ1Y3QgdGhlc2UgcG9pbnRlcnMKKyAgICAvLyBkdXJpbmcgc2VyaWFsaXphdGlvbi4KKyAg
ICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBtX3NoYXJlZFF1YWRTdGF0ZTsK
KworICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7CisgICAgV2ViUmVjdCBtX3F1YWRSZWN0OworICAg
IFdlYlJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisKKyAgICAvLyBCeSBkZWZhdWx0LCB0aGUgc2hh
cmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHF1YWQgaXMKKyAg
ICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJp
ZGUgd2l0aCB0aGVzZQorICAgIC8vIHZhcmlhYmxlcy4KKyAgICBib29sIG1fcXVhZE9wYXF1ZTsK
KyAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVj
dCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJv
dmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5
IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUuCisgICAgV2ViUmVjdCBtX29wYXF1
ZVJlY3Q7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVh
ZFN0YXRlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGNhMzc1YjNmMmU0OTc4MDBiZDU3M2VlZmRm
MGYzZDc3ZTFlM2UzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZV9oCisjZGVmaW5lIFdl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorI2luY2x1ZGUgIldlYlJlY3QuaCIKKyNpbmNs
dWRlICJXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSB7CitwdWJsaWM6CisgICAgLy8gVGhl
IHRyYW5zZm9ybSB0aGF0IFdlYkNvbXBvc2l0b3JRdWFkcyBzaG91bGQgYmUgdHJhbnNmb3JtZWQg
d2l0aC4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtOworICAgIC8v
IFRoZSB0cmFuc2Zvcm0gdGhhdCBsYXllclJlY3Qgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIHdpdGgu
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgV2ViUmVj
dCBsYXllclJlY3Q7CisgICAgV2ViUmVjdCBzY2lzc29yUmVjdDsKKyAgICBmbG9hdCBvcGFjaXR5
OworICAgIGJvb2wgb3BhcXVlOworCisgICAgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSgp
OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsK
KyAgICBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsK
KyAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdDsKKyNlbmRpZgorfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5YjI0
NjIxYzk2NDgxNDFhMzQwZTdhZWI2ZTZmNjA0NWMzNjdmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JTb2xpZENv
bG9yUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZF9oCisKKyNpbmNs
dWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvclF1YWQuaCIKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2Vi
Q29tcG9zaXRvclNvbGlkQ29sb3JRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1
YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxX
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNrQ29sb3IpOworI2VuZGlm
CisKKyAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfTsKKworICAg
IHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQqIG1hdGVyaWFsQ2FzdChj
b25zdCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yKTsKKyNl
bmRpZgorCisgICAgU2tDb2xvciBtX2NvbG9yOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZhM2Nl
YWI0YjZjMzNmMTNkNTM5Y2JmZmRiYWY4MTExMWZhMzU4ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVh
ZC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JTdHJlYW1W
aWRlb1F1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkX2gKKworI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Lmg+CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBw
YWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQgOiBwdWJs
aWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ+IGNy
ZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlSWQ7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1
YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9z
aXRvclN0cmVhbVZpZGVvUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRyaXg7Cit9OworCisjcHJhZ21hIHBh
Y2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJl
NmZkM2U2ZDMxODI2ZjI1MTJhODAyNjM3Mjc5ZjQzMjcyNjA2MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkX2gKKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2VuZGlmCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvclF1YWQuaCIKKyNpbmNsdWRlICJX
ZWJGbG9hdFJlY3QuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBh
Y2socHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIDogcHVibGljIFdl
YkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IGNyZWF0ZShjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOworICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQorI2VuZGlmCisKKyAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorICAgIGJv
b2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFs
cGhhOyB9CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVkOyB9CisK
KyAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCop
OworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wgcHJlbXVs
dGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlw
cGVkKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgYm9vbCBtX3By
ZW11bHRpcGxpZWRBbHBoYTsKKyAgICBXZWJGbG9hdFJlY3QgbV91dlJlY3Q7CisgICAgYm9vbCBt
X2ZsaXBwZWQ7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1
YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVR
dWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmVkMzFiMjQ1N2JhNjI3YjgxYzE4ODk5MjE0NTFmMzllZDlmNTc1
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29tcG9zaXRvclRpbGVRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclRpbGVRdWFkX2gKKwor
I2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFk
LmgiCisjaW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRlICJXZWJTaXplLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNwcmFnbWEgcGFj
ayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yVGlsZVF1YWQgOiBwdWJsaWMgV2ViQ29t
cG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29s
IHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCBy
aWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworCisgICAgUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorICAgIFdlYkNvcmU6Oklu
dFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7IH0K
KyAgICBXZWJDb3JlOjpJbnRTaXplIHRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlU2l6ZTsgfQorICAgIEdDM0RpbnQgdGV4dHVyZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZUZpbHRlcjsgfQorICAgIGJvb2wgc3dpenpsZUNvbnRlbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9zd2l6emxlQ29udGVudHM7IH0KKworICAgIGJvb2wgbGVmdEVkZ2VBQSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVmdEVkZ2VBQTsgfQorICAgIGJvb2wgdG9wRWRnZUFBKCkgY29uc3QgeyByZXR1
cm4gbV90b3BFZGdlQUE7IH0KKyAgICBib29sIHJpZ2h0RWRnZUFBKCkgY29uc3QgeyByZXR1cm4g
bV9yaWdodEVkZ2VBQTsgfQorICAgIGJvb2wgYm90dG9tRWRnZUFBKCkgY29uc3QgeyByZXR1cm4g
bV9ib3R0b21FZGdlQUE7IH0KKworICAgIGJvb2wgaXNBbnRpYWxpYXNlZCgpIGNvbnN0IHsgcmV0
dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVkZ2VBQSgpIHx8IGJvdHRv
bUVkZ2VBQSgpOyB9CisjZW5kaWYKKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGls
ZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICAgV2ViQ29tcG9zaXRvclRpbGVRdWFkKGNv
bnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmls
dGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VB
QSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworI2VuZGlmCisKKyAgICBQ
bGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOworICAgIFdlYlBvaW50IG1fdGV4dHVyZU9mZnNl
dDsKKyAgICBXZWJTaXplIG1fdGV4dHVyZVNpemU7CisgICAgR0MzRGludCBtX3RleHR1cmVGaWx0
ZXI7CisgICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsKKyAgICBib29sIG1fbGVmdEVkZ2VBQTsK
KyAgICBib29sIG1fdG9wRWRnZUFBOworICAgIGJvb2wgbV9yaWdodEVkZ2VBQTsKKyAgICBib29s
IG1fYm90dG9tRWRnZUFBOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlZmE0M2M3ODU4MTJiNDExY2RkZTA5ZjkwZGU5ZjlkYzYzZWU3
ZTQ5Li45MWU0ODg5YTU0MTU2YWJkMmM5NGRiNjVjMGZiZTE4NTZmNDQ0NmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC04MTkwLDYgKzgxOTAsMTUgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQXVkaW9CdXMuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JDaGVj
a2VyYm9hcmRRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclF1YWQuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9yVGlsZVF1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkRhdGEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKQEAgLTgyODIsMTcgKzgyOTEsMTQgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRp
b25DdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FuaW1hdGlvbkV2ZW50cy5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRy
YWNrZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFz
ZWRUaW1lU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxhcy5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRm9udEF0bGFzLmgnLApAQCAtODMwMyw3
ICs4MzA5LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0dlc3R1cmVDdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLApAQCAtODM2NSwxNyArODM3MCwxMyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0
dGluZ3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NldHRpbmdzLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
RHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmgnLApAQCAtODM4NSw3ICs4Mzg2LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFRhc2suaCcsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVh
ZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hl
Y2tlcmJvYXJkUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcwZGIyYjg0MjViYmRmMzA5NDE4ZDliMDk3
MjhmOTZlZThiYjlhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuY3BwCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkPiBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6Y3JlYXRlKGNv
bnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3Np
dG9yQ2hlY2tlcmJvYXJkUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0KSk7Cit9CisKK1dl
YkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkOjpXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVh
ZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0KQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkKK3sKK30K
KworY29uc3QgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQqIFdlYkNvbXBvc2l0b3JDaGVj
a2VyYm9hcmRRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQp
Cit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OkNo
ZWNrZXJib2FyZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkKj4ocXVhZCk7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJR
dWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvckRlYnVnQm9yZGVyUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM3ZDM0ZTJiNGI5NDhjMjRk
ZDdiZWEyYzYwNDY2NTMyNmUxMDNjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5j
cHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxXZWJDb21w
b3NpdG9yRGVidWdCb3JkZXJRdWFkPiBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkOjpjcmVh
dGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvciwgaW50IHdpZHRoKQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvciwgd2lkdGgpKTsKK30KKworV2ViQ29tcG9zaXRvckRl
YnVnQm9yZGVyUXVhZDo6V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChjb25zdCBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCisgICAgOiBXZWJDb21wb3NpdG9yUXVh
ZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0JvcmRlciwgcXVhZFJl
Y3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBt
X3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAyNTUp
CisgICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Cit9CisKK2NvbnN0IFdlYkNvbXBvc2l0
b3JEZWJ1Z0JvcmRlclF1YWQqIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ6Om1hdGVyaWFs
Q2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+
bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXIpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKj4ocXVhZCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjNhMjkzMTRkYWRkZjk4ZDFjODg5NTEwMzFmYmUxYWU5MTgwYzgyNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWQuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFj
ZVF1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkPiBXZWJDb21wb3NpdG9y
SU9TdXJmYWNlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKK3sKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgcXVhZFJlY3QsIGlvU3VyZmFjZVNpemUsIGlvU3VyZmFjZVRleHR1cmVJZCkpOworfQorCitX
ZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZDo6V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQoY29u
c3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQg
aW9TdXJmYWNlVGV4dHVyZUlkKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0
YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6SU9TdXJmYWNlQ29udGVudCwgcXVhZFJlY3QpCisgICAg
LCBtX2lvU3VyZmFjZVNpemUoaW9TdXJmYWNlU2l6ZSkKKyAgICAsIG1faW9TdXJmYWNlVGV4dHVy
ZUlkKGlvU3VyZmFjZVRleHR1cmVJZCkKK3sKK30KKworY29uc3QgV2ViQ29tcG9zaXRvcklPU3Vy
ZmFjZVF1YWQqIFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkOjptYXRlcmlhbENhc3QoY29uc3Qg
V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkg
PT0gV2ViQ29tcG9zaXRvclF1YWQ6OklPU3VyZmFjZUNvbnRlbnQpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCo+KHF1YWQpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkNvbXBvc2l0b3JRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViQ29tcG9zaXRvclF1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzM0YTFhNjEwNDExODFl
ZDAxMzVlNzIxNGFiMThkM2JjM2RmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcApAQCAtMCww
ICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yUXVhZC5oPgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9R
dWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb21wb3NpdG9yUXVhZDo6V2Vi
Q29tcG9zaXRvclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBNYXRlcmlhbCBtYXRlcmlhbCwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCisg
ICAgOiBtX3NoYXJlZFF1YWRTdGF0ZShzaGFyZWRRdWFkU3RhdGUpCisgICAgLCBtX21hdGVyaWFs
KG1hdGVyaWFsKQorICAgICwgbV9xdWFkUmVjdChxdWFkUmVjdCkKKyAgICAsIG1fcXVhZFZpc2li
bGVSZWN0KHF1YWRSZWN0KQorICAgICwgbV9xdWFkT3BhcXVlKHRydWUpCisgICAgLCBtX25lZWRz
QmxlbmRpbmcoZmFsc2UpCit7CisgICAgQVNTRVJUKG1fc2hhcmVkUXVhZFN0YXRlKTsKKyAgICBB
U1NFUlQobV9tYXRlcmlhbCAhPSBJbnZhbGlkKTsKK30KKworSW50UmVjdCBXZWJDb21wb3NpdG9y
UXVhZDo6b3BhcXVlUmVjdCgpIGNvbnN0Cit7CisgICAgaWYgKG9wYWNpdHkoKSAhPSAxKQorICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOworICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhcXVl
ICYmIG1fcXVhZE9wYXF1ZSkKKyAgICAgICAgcmV0dXJuIG1fcXVhZFJlY3Q7CisgICAgcmV0dXJu
IG1fb3BhcXVlUmVjdDsKK30KKwordm9pZCBXZWJDb21wb3NpdG9yUXVhZDo6c2V0UXVhZFZpc2li
bGVSZWN0KGNvbnN0IEludFJlY3QmIHF1YWRWaXNpYmxlUmVjdCkKK3sKKyAgICBJbnRSZWN0IGlu
dGVyc2VjdGlvbiA9IHF1YWRWaXNpYmxlUmVjdDsKKyAgICBpbnRlcnNlY3Rpb24uaW50ZXJzZWN0
KG1fcXVhZFJlY3QpOworICAgIG1fcXVhZFZpc2libGVSZWN0ID0gaW50ZXJzZWN0aW9uOworfQor
Cit1bnNpZ25lZCBXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtYXRlcmlhbCgpKSB7CisgICAgY2FzZSBDaGVja2VyYm9hcmQ6CisgICAgICAgIHJldHVybiBz
aXplb2YoV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQpOworICAgIGNhc2UgRGVidWdCb3Jk
ZXI6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCk7
CisgICAgY2FzZSBJT1N1cmZhY2VDb250ZW50OgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNv
bXBvc2l0b3JJT1N1cmZhY2VRdWFkKTsKKyAgICBjYXNlIFRleHR1cmVDb250ZW50OgorICAgICAg
ICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCk7CisgICAgY2FzZSBTb2xp
ZENvbG9yOgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZCk7CisgICAgY2FzZSBUaWxlZENvbnRlbnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29t
cG9zaXRvclRpbGVRdWFkKTsKKyAgICBjYXNlIFN0cmVhbVZpZGVvQ29udGVudDoKKyAgICAgICAg
cmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKTsKKyAgICBjYXNlIElu
dmFsaWQ6CisgICAgY2FzZSBSZW5kZXJQYXNzOgorICAgIGNhc2UgWVVWVmlkZW9Db250ZW50Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBDUkFTSCgpOworICAgIHJldHVybiBzaXplb2Yo
V2ViQ29tcG9zaXRvclF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjQwMDFhYTNhNzQ3Y2I0ZDU4OWMzY2Jm
Yjk1NDE0OGNmMGU2YjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcApAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaD4KKworI2luY2x1ZGUgIkZsb2F0UXVh
ZC5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKKwordXNpbmcgV2ViQ29yZTo6RmxvYXRR
dWFkOwordXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUo
KQorICAgIDogb3BhY2l0eSgwKQorICAgICwgb3BhcXVlKG9wYXF1ZSkKK3sKK30KKworUGFzc093
blB0cjxXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlPiBXZWJDb21wb3NpdG9yU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zv
cm0sIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3Bh
Y2l0eSwgYm9vbCBvcGFxdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3JtLCBsYXllclJl
Y3QsIHNjaXNzb3JSZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKK30KKworV2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZTo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IElu
dFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKKyAgICA6IHF1
YWRUcmFuc2Zvcm0ocXVhZFRyYW5zZm9ybSkKKyAgICAsIGxheWVyVHJhbnNmb3JtKGxheWVyVHJh
bnNmb3JtKQorICAgICwgbGF5ZXJSZWN0KGxheWVyUmVjdCkKKyAgICAsIHNjaXNzb3JSZWN0KHNj
aXNzb3JSZWN0KQorICAgICwgb3BhY2l0eShvcGFjaXR5KQorICAgICwgb3BhcXVlKG9wYXF1ZSkK
K3sKK30KKworYm9vbCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0Fs
aWduZWRJbnRSZWN0KCkgY29uc3QKK3sKKyAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lk
ZXIgd2luZG93IG9yIHByb2plY3Rpb24gbWF0cmljZXMuCisgICAgLy8gQXNzdW1lIHRoYXQgdGhl
eSdyZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRlZ2VyIHNjYWxlcyBhbmQgdHJhbnNsYXRpb25z
LgorICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOworICAgIEZsb2F0UXVhZCBxdWFkID0gV2ViQ29y
ZTo6Q0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtLCBGbG9hdFF1YWQoSW50UmVjdChs
YXllclJlY3QpKSwgY2xpcHBlZCk7CisgICAgcmV0dXJuICFjbGlwcGVkICYmIHF1YWQuaXNSZWN0
aWxpbmVhcigpICYmIHF1YWQuYm91bmRpbmdCb3goKS5pc0V4cHJlc3NpYmxlQXNJbnRSZWN0KCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YmJhMjU1MWQ2NjEyZWJhZmZhYzFmOTBlYWU0ODI2MTNhNDYwY2Y0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlk
Q29sb3JRdWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFzc093blB0cjxXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ+IFdlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
U2tDb2xvciBjb2xvcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JT
b2xpZENvbG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvcikpOworfQorCitX
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZChj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCisgICAgOiBXZWJDb21w
b3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpTb2xpZENvbG9y
LCBxdWFkUmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3IpCit7CisgICAgaWYgKFNrQ29sb3JHZXRB
KG1fY29sb3IpIDwgMjU1KQorICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNl
CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OworfQorCitjb25zdCBXZWJDb21wb3Np
dG9yU29saWRDb2xvclF1YWQqIFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0ZXJpYWxD
YXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5t
YXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKj4ocXVhZCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlMjU3YWFmN2UzNDFkZWM0ODQ3ZTAzMWZkZTAwMGQyM2Y2MWNiNTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVh
bVZpZGVvUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZD4gV2ViQ29t
cG9zaXRvclN0cmVhbVZpZGVvUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2ln
bmVkIHRleHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCBtYXRyaXgpKTsKK30KKworV2ViQ29t
cG9zaXRvclN0cmVhbVZpZGVvUXVhZDo6V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtYXRyaXgpCisgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3Rh
dGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQorICAg
ICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9tYXRyaXgobWF0cml4KQoreworfQor
Citjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKiBXZWJDb21wb3NpdG9yU3RyZWFt
VmlkZW9RdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7
CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVh
bVZpZGVvQ29udGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3Np
dG9yVGV4dHVyZVF1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZjQ1ZmRjNGNiMmE1OGY3Mjg3ZjVmYWM1
ZGM1NmJkZDIzMDQwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVh
ZD4gV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25z
dCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKK30KKwor
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlw
bGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQorICAgIDog
V2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGV4
dHVyZUNvbnRlbnQsIHF1YWRSZWN0KQorICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAg
ICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQorICAgICwgbV91dlJl
Y3QodXZSZWN0KQorICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCit7Cit9CisKK3ZvaWQgV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkOjpzZXROZWVkc0JsZW5kaW5nKCkKK3sKKyAgICBtX25lZWRzQmxl
bmRpbmcgPSB0cnVlOworfQorCitjb25zdCBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqIFdlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9z
aXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29t
cG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKj4ocXVhZCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRp
bGVRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTA2M2RlMjUyZjY0YzFkMWM2NmY3
MmJjYTBmMDQwMDlhMzRiOTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tcG9zaXRvclRpbGVRdWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IFdl
YkNvbXBvc2l0b3JUaWxlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQ
b2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQg
dGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9v
bCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRpbGVRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVy
ZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRn
ZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7Cit9CisKK1dlYkNvbXBvc2l0b3JUaWxl
UXVhZDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQ
b2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQg
dGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9v
bCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorICAgIDog
V2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGls
ZWRDb250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAs
IG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJlT2Zmc2V0KQorICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0
dXJlU2l6ZSkKKyAgICAsIG1fdGV4dHVyZUZpbHRlcih0ZXh0dXJlRmlsdGVyKQorICAgICwgbV9z
d2l6emxlQ29udGVudHMoc3dpenpsZUNvbnRlbnRzKQorICAgICwgbV9sZWZ0RWRnZUFBKGxlZnRF
ZGdlQUEpCisgICAgLCBtX3RvcEVkZ2VBQSh0b3BFZGdlQUEpCisgICAgLCBtX3JpZ2h0RWRnZUFB
KHJpZ2h0RWRnZUFBKQorICAgICwgbV9ib3R0b21FZGdlQUEoYm90dG9tRWRnZUFBKQoreworICAg
IGlmIChpc0FudGlhbGlhc2VkKCkpCisgICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Cisg
ICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsKK30KKworY29uc3QgV2ViQ29tcG9zaXRvclRp
bGVRdWFkKiBXZWJDb21wb3NpdG9yVGlsZVF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21w
b3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJD
b21wb3NpdG9yUXVhZDo6VGlsZWRDb250ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViQ29tcG9zaXRvclRpbGVRdWFkKj4ocXVhZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDgzNWRmYmQ3ZjE5N2MwOTRkNzQ5MzQ4OTE0Y2Jj
NjRhZjg4MTk3YmMuLmNmNzlhM2I2ZDE3MDhjNGExYWQ3YzJlMjlkYTk0ODlkZDhjMmZlY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDgsMjMgKzQ4LDE0IEBA
CiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUg
ImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVy
RHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclF1YWQuaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgotI2luY2x1ZGUg
ImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNl
RmlsdGVycy5oIgogI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgiCi0jaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIK
LSNpbmNsdWRlICJjYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgotI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVh
ZC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBA
IC0zNzIsNyArMzYzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQ
YXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QKICAgICAgICAgZHJhd1F1
YWQoaXQtPmdldCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFk
KGNvbnN0IENDRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKIHsKICAgICBJbnRS
ZWN0IHNjaXNzb3JSZWN0ID0gcXVhZC0+c2Npc3NvclJlY3QoKTsKIApAQCAtMzg4LDM1ICszNzks
MzUgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1
YWQqIHF1YWQpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFw
aGljc0NvbnRleHQzRDo6QkxFTkQpKTsKIAogICAgIHN3aXRjaCAocXVhZC0+bWF0ZXJpYWwoKSkg
ewotICAgIGNhc2UgQ0NEcmF3UXVhZDo6SW52YWxpZDoKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQ6OkludmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkNoZWNrZXJib2FyZDoKLSAgICAgICAg
ZHJhd0NoZWNrZXJib2FyZFF1YWQocXVhZC0+dG9DaGVja2VyYm9hcmREcmF3UXVhZCgpKTsKKyAg
ICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OkNoZWNrZXJib2FyZDoKKyAgICAgICAg
ZHJhd0NoZWNrZXJib2FyZFF1YWQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRl
cjoKLSAgICAgICAgZHJhd0RlYnVnQm9yZGVyUXVhZChxdWFkLT50b0RlYnVnQm9yZGVyRHJhd1F1
YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0JvcmRlcjoK
KyAgICAgICAgZHJhd0RlYnVnQm9yZGVyUXVhZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVy
aWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6SU9T
dXJmYWNlQ29udGVudDoKLSAgICAgICAgZHJhd0lPU3VyZmFjZVF1YWQocXVhZC0+dG9JT1N1cmZh
Y2VEcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OklPU3Vy
ZmFjZUNvbnRlbnQ6CisgICAgICAgIGRyYXdJT1N1cmZhY2VRdWFkKENDSU9TdXJmYWNlRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3
UXVhZDo6UmVuZGVyUGFzczoKLSAgICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKHF1YWQtPnRvUmVu
ZGVyUGFzc0RyYXdRdWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
UmVuZGVyUGFzczoKKyAgICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKENDUmVuZGVyUGFzc0RyYXdR
dWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJh
d1F1YWQ6OlNvbGlkQ29sb3I6Ci0gICAgICAgIGRyYXdTb2xpZENvbG9yUXVhZChxdWFkLT50b1Nv
bGlkQ29sb3JEcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6
OlNvbGlkQ29sb3I6CisgICAgICAgIGRyYXdTb2xpZENvbG9yUXVhZChXZWJLaXQ6OldlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQ6Ci0gICAgICAgIGRyYXdT
dHJlYW1WaWRlb1F1YWQocXVhZC0+dG9TdHJlYW1WaWRlb0RyYXdRdWFkKCkpOworICAgIGNhc2Ug
V2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFtVmlkZW9Db250ZW50OgorICAgICAgICBk
cmF3U3RyZWFtVmlkZW9RdWFkKENDU3RyZWFtVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1
YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpUZXh0dXJlQ29udGVu
dDoKLSAgICAgICAgZHJhd1RleHR1cmVRdWFkKHF1YWQtPnRvVGV4dHVyZURyYXdRdWFkKCkpOwor
ICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRlbnQ6CisgICAg
ICAgIGRyYXdUZXh0dXJlUXVhZChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6bWF0
ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQ6Ci0gICAgICAgIGRyYXdUaWxlUXVhZChxdWFkLT50b1RpbGVEcmF3UXVhZCgp
KTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudDoKKyAg
ICAgICAgZHJhd1RpbGVRdWFkKENDVGlsZURyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OllVVlZpZGVvQ29udGVudDoKLSAg
ICAgICAgZHJhd1lVVlZpZGVvUXVhZChxdWFkLT50b1lVVlZpZGVvRHJhd1F1YWQoKSk7CisgICAg
Y2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpZVVZWaWRlb0NvbnRlbnQ6CisgICAgICAg
IGRyYXdZVVZWaWRlb1F1YWQoQ0NZVVZWaWRlb0RyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCmluZGV4IDYyNWU4MmYwODhlMDcyMTUyZWVkYmNjNjQ4Y2JjODUyOWVmYzVhMTguLmU5Yjk1
NGRmYjY1Njg3YTAzZTgxODMwZTk5NGU4OGE0MjI3MzNlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCkBAIC0zNyw3ICszNywxNiBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RENocm9taXVtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQuaCIKKyNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJj
Yy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCisjaW5jbHVkZSAiY2MvQ0NTb2xpZENv
bG9yRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKKyNp
bmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdR
dWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NiwxNiArNTUsNiBAQCBj
bGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOwotY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOwot
Y2xhc3MgQ0NEcmF3UXVhZDsKLWNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1Jl
bmRlclBhc3NEcmF3UXVhZDsKLWNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwotY2xhc3MgQ0NT
dHJlYW1WaWRlb0RyYXdRdWFkOwotY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1Rp
bGVEcmF3UXVhZDsKLWNsYXNzIENDWVVWVmlkZW9EcmF3UXVhZDsKIGNsYXNzIEdlb21ldHJ5Qmlu
ZGluZzsKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgU2NvcGVkRW5zdXJlRnJhbWVidWZm
ZXJBbGxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlMDMzNTE0YTY4NDZhYjlmNGNiMWZj
YjFiOTYxNThmZjJkMDIzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0No
ZWNrZXJib2FyZERyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERy
YXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkPiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QpKTsKLX0KLQotQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Q0NDaGVj
a2VyYm9hcmREcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQsIHF1YWRSZWN0KQotewotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0No
ZWNrZXJib2FyZERyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgKaW5kZXggMjdmOGM1NmJkNDljNDVl
MzA1NWEzZmE3Y2I2ZTdhNzI1ZTVmNDNmMS4uMzUxMDRkY2Y1YjNjN2U5ZjJmODU1YjVmMjIwNWE2
MWMxYjZiOWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaApA
QCAtMjYsMjAgKzI2LDEwIEBACiAjaWZuZGVmIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWRfaAogI2Rl
ZmluZSBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NDaGVja2VyYm9hcmREcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NDaGVja2VyYm9hcmREcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYpOwotCi1wcml2YXRlOgotICAgIENDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jik7
Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQgQ0ND
aGVja2VyYm9hcmREcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1
Z0JvcmRlckRyYXdRdWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUyN2M0
N2M1NTc2Zjk2YWM3ZjM5OTljYzA3YTFkNTBkMTNmYjY3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNj
L0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NP
d25QdHI8Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkPiBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0
ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvciwgaW50IHdpZHRoKQotewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IGNvbG9yLCB3aWR0aCkpOwotfQotCi1DQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3Jk
ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvciwgaW50IHdpZHRoKQotICAgIDogQ0NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkRlYnVnQm9yZGVyLCBxdWFkUmVj
dCkKLSAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgLCBtX3dpZHRoKHdpZHRoKQotewotICAgIG1f
cXVhZE9wYXF1ZSA9IGZhbHNlOwotICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkK
LSAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuaAppbmRleCBlYTFjZjg0NzYwNDFkMWIxNzJlNmMwMjZjN2Y3
ODYyODFhY2U0NGY0Li5hNzJjMjc0MTc2YTA2YTM2NDJmMjE2ODBjYTU0NzI1MGEyMmExYTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyNyArMjYsMTAgQEAKICNp
Zm5kZWYgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkX2gKICNkZWZpbmUgQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkX2gKIAotI2luY2x1ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9z
aXRvckRlYnVnQm9yZGVyUXVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEND
RGVidWdCb3JkZXJEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ0RlYnVnQm9yZGVyRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDRGVidWdCb3JkZXJEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIFNrQ29sb3IsIGludCB3aWR0aCk7Ci0KLSAgICBTa0Nv
bG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfTsKLSAgICBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIFNrQ29sb3Is
IGludCB3aWR0aCk7Ci0KLSAgICBTa0NvbG9yIG1fY29sb3I7Ci0gICAgaW50IG1fd2lkdGg7Ci19
OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCBDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxZjU2MjFkYjUzNmRkYTVmOTVmMjViMDNiNzJjMWYy
YjlmNjE4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotCi0jaW5jbHVkZSAiY2MvQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5o
IgotI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgotI2luY2x1
ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUND
RHJhd1F1YWQ6OkNDRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgTWF0ZXJpYWwgbWF0ZXJpYWwsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQotICAgIDog
bV9zaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlKQotICAgICwgbV9tYXRlcmlhbChtYXRl
cmlhbCkKLSAgICAsIG1fcXVhZFJlY3QocXVhZFJlY3QpCi0gICAgLCBtX3F1YWRWaXNpYmxlUmVj
dChxdWFkUmVjdCkKLSAgICAsIG1fcXVhZE9wYXF1ZSh0cnVlKQotICAgICwgbV9uZWVkc0JsZW5k
aW5nKGZhbHNlKQotewotICAgIEFTU0VSVChtX3NoYXJlZFF1YWRTdGF0ZSk7Ci0gICAgQVNTRVJU
KG1fbWF0ZXJpYWwgIT0gSW52YWxpZCk7Ci19Ci0KLUludFJlY3QgQ0NEcmF3UXVhZDo6b3BhcXVl
UmVjdCgpIGNvbnN0Ci17Ci0gICAgaWYgKG9wYWNpdHkoKSAhPSAxKQotICAgICAgICByZXR1cm4g
SW50UmVjdCgpOwotICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1
YWRPcGFxdWUpCi0gICAgICAgIHJldHVybiBtX3F1YWRSZWN0OwotICAgIHJldHVybiBtX29wYXF1
ZVJlY3Q7Ci19Ci0KLXZvaWQgQ0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVSZWN0KGNvbnN0IElu
dFJlY3QmIHF1YWRWaXNpYmxlUmVjdCkKLXsKLSAgICBtX3F1YWRWaXNpYmxlUmVjdCA9IHF1YWRW
aXNpYmxlUmVjdDsKLSAgICBtX3F1YWRWaXNpYmxlUmVjdC5pbnRlcnNlY3QobV9xdWFkUmVjdCk7
Ci19Ci0KLWNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvQ2hlY2tl
cmJvYXJkRHJhd1F1YWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IENoZWNr
ZXJib2FyZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJh
d1F1YWQqPih0aGlzKTsKLX0KLQotY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBDQ0RyYXdR
dWFkOjp0b0RlYnVnQm9yZGVyRHJhd1F1YWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX21hdGVy
aWFsID09IERlYnVnQm9yZGVyKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NEZWJ1
Z0JvcmRlckRyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQq
IENDRHJhd1F1YWQ6OnRvSU9TdXJmYWNlRHJhd1F1YWQoKSBjb25zdAotewotICAgIEFTU0VSVCht
X21hdGVyaWFsID09IElPU3VyZmFjZUNvbnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDUmVuZGVyUGFz
c0RyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gUmVuZGVyUGFzcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDU29s
aWRDb2xvckRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gU29saWRDb2xvcik7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0
IENDU3RyZWFtVmlkZW9EcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9TdHJlYW1WaWRlb0RyYXdRdWFk
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBTdHJlYW1WaWRlb0NvbnRlbnQp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqPih0
aGlzKTsKLX0KLQotY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGV4dHVy
ZURyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBUZXh0dXJlQ29u
dGVudCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKj4o
dGhpcyk7Ci19Ci1jb25zdCBDQ1RpbGVEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9UaWxlRHJhd1F1
YWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFRpbGVkQ29udGVudCk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDVGlsZURyYXdRdWFkKj4odGhpcyk7Ci19Ci0K
LWNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9ZVVZWaWRlb0RyYXdRdWFk
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBZVVZWaWRlb0NvbnRlbnQpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqPih0aGlzKTsK
LX0KLQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggNzU2YjY4MDM2ZGQ2NjM3N2U0NTFkMmUx
NzIwYThhYTc0YThmMTBlMC4uNjE0ZDIwZTA0MTc4ZTFjMmU3MjQ0NWI1NzA2ZDY5ZTUwYzcwYjRj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtMjYsOTEgKzI2LDEwIEBACiAjaWZuZGVmIENDRHJh
d1F1YWRfaAogI2RlZmluZSBDQ0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVh
ZFN0YXRlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNsYXNzIEND
RGVidWdCb3JkZXJEcmF3UXVhZDsKLWNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7Ci1jbGFzcyBD
Q1JlbmRlclBhc3NEcmF3UXVhZDsKLWNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwotY2xhc3Mg
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOwotY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7Ci1jbGFzcyBD
Q1RpbGVEcmF3UXVhZDsKLWNsYXNzIENDWVVWVmlkZW9EcmF3UXVhZDsKLQotLy8gQ0NEcmF3UXVh
ZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRyYXdpbmcgYSBxdWFkLiBCZWNhdXNlIGRpZmZl
cmVudAotLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVyZW50IGJpdHMgb2YgcGVyLXF1YWQgZGF0YSB0
byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUKLS8vIGZyb20gQ0NEcmF3UXVhZCBzdG9yZSBh
ZGRpdGlvbmFsIGRhdGEgaW4gdGhlaXIgZGVyaXZlZCBpbnN0YW5jZS4gVGhlIE1hdGVyaWFsCi0v
LyBlbnVtIGlzIHVzZWQgdG8gInNhZmVseSIgdXBjYXN0IHRvIHRoZSBkZXJpdmVkIGNsYXNzLgot
Y2xhc3MgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEcmF3UXVhZCk7
Ci1wdWJsaWM6Ci0gICAgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3F1YWRSZWN0OyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
cXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJh
bnNmb3JtKCk7IH0KLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBs
YXllclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclRy
YW5zZm9ybSgpOyB9Ci0gICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVjdCgpOyB9Ci0gICAgY29uc3QgSW50UmVjdCYg
c2Npc3NvclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+c2Npc3NvclJl
Y3QoKTsgfQotICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRT
dGF0ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBibGVuZGluZywg
d2hhdCBwYXJ0IG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJlIG9wYXF1ZT8KLSAgICBJ
bnRSZWN0IG9wYXF1ZVJlY3QoKSBjb25zdDsKLSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBtX25lZWRzQmxlbmRpbmcgfHwgIW9wYXF1ZVJlY3QoKS5jb250YWlucyhtX3F1
YWRWaXNpYmxlUmVjdCk7IH0KLSAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVj
dCgpOyB9Ci0KLSAgICAvLyBBbGxvd3MgY2hhbmdpbmcgdGhlIHJlY3QgdGhhdCBnZXRzIGRyYXdu
IHRvIG1ha2UgaXQgc21hbGxlci4gUGFyYW1ldGVyIHBhc3NlZAotICAgIC8vIGluIHdpbGwgYmUg
Y2xpcHBlZCB0byBxdWFkUmVjdCgpLgotICAgIHZvaWQgc2V0UXVhZFZpc2libGVSZWN0KGNvbnN0
IEludFJlY3QmKTsKLSAgICBjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3F1YWRWaXNpYmxlUmVjdDsgfQotCi0gICAgZW51bSBNYXRlcmlhbCB7Ci0gICAg
ICAgIEludmFsaWQsCi0gICAgICAgIENoZWNrZXJib2FyZCwKLSAgICAgICAgRGVidWdCb3JkZXIs
Ci0gICAgICAgIElPU3VyZmFjZUNvbnRlbnQsCi0gICAgICAgIFJlbmRlclBhc3MsCi0gICAgICAg
IFRleHR1cmVDb250ZW50LAotICAgICAgICBTb2xpZENvbG9yLAotICAgICAgICBUaWxlZENvbnRl
bnQsCi0gICAgICAgIFlVVlZpZGVvQ29udGVudCwKLSAgICAgICAgU3RyZWFtVmlkZW9Db250ZW50
LAotICAgIH07Ci0KLSAgICBNYXRlcmlhbCBtYXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
ZXJpYWw7IH0KLSAgICBib29sIGlzRGVidWdRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlh
bCA9PSBEZWJ1Z0JvcmRlcjsgfQotCi0gICAgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCog
dG9DaGVja2VyYm9hcmREcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDRGVidWdCb3JkZXJE
cmF3UXVhZCogdG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NJT1N1
cmZhY2VEcmF3UXVhZCogdG9JT1N1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IEND
UmVuZGVyUGFzc0RyYXdRdWFkKiB0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNv
bnN0IENDU29saWRDb2xvckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0Owot
ICAgIGNvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCogdG9TdHJlYW1WaWRlb0RyYXdRdWFkKCkg
Y29uc3Q7Ci0gICAgY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHRvVGV4dHVyZURyYXdRdWFkKCkg
Y29uc3Q7Ci0gICAgY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHRvVGlsZURyYXdRdWFkKCkgY29uc3Q7
Ci0gICAgY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiB0b1lVVlZpZGVvRHJhd1F1YWQoKSBjb25z
dDsKLQotICAgIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgQ0NEcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBjb25zdCBJbnRSZWN0Jik7
Ci0KLSAgICBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogbV9zaGFyZWRRdWFkU3RhdGU7Ci0KLSAg
ICBNYXRlcmlhbCBtX21hdGVyaWFsOwotICAgIEludFJlY3QgbV9xdWFkUmVjdDsKLSAgICBJbnRS
ZWN0IG1fcXVhZFZpc2libGVSZWN0OwotCi0gICAgLy8gQnkgZGVmYXVsdCwgdGhlIHNoYXJlZCBx
dWFkIHN0YXRlIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBxdWFkIGlzCi0gICAgLy8g
b3BhcXVlIG9yIG5lZWRzIGJsZW5kaW5nLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHdp
dGggdGhlc2UKLSAgICAvLyB2YXJpYWJsZXMuCi0gICAgYm9vbCBtX3F1YWRPcGFxdWU7Ci0gICAg
Ym9vbCBtX25lZWRzQmxlbmRpbmc7Ci0KLSAgICAvLyBCZSBkZWZhdWx0LCB0aGlzIHJlY3QgaXMg
ZW1wdHkuIEl0IGlzIHVzZWQgd2hlbiB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgYW5kIGFib3ZlCi0g
ICAgLy8gdmFyaWFibGVzIGRldGVybWluZSB0aGF0IHRoZSBxdWFkIGlzIG5vdCBmdWxseSBvcGFx
dWUgYnV0IG1heSBiZSBwYXJ0aWFsbHkgb3BhcXVlLgotICAgIEludFJlY3QgbV9vcGFxdWVSZWN0
OwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkIENDRHJhd1F1YWQ7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZkYjRlZmNiYWFjNjAwMjMyZGVlNGM0YjI2YzA5ODk2
ZjMzNWVmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURy
YXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ0lPU3VyZmFjZURyYXdRdWFkPiBDQ0lP
U3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFj
ZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDSU9TdXJmYWNlRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgaW9T
dXJmYWNlU2l6ZSwgaW9TdXJmYWNlVGV4dHVyZUlkKSk7Ci19Ci0KLUNDSU9TdXJmYWNlRHJhd1F1
YWQ6OkNDSU9TdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFj
ZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKLSAgICA6IENDRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpJT1N1cmZhY2VDb250ZW50LCBxdWFkUmVjdCkKLSAg
ICAsIG1faW9TdXJmYWNlU2l6ZShpb1N1cmZhY2VTaXplKQotICAgICwgbV9pb1N1cmZhY2VUZXh0
dXJlSWQoaW9TdXJmYWNlVGV4dHVyZUlkKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3Vy
ZmFjZURyYXdRdWFkLmgKaW5kZXggMjdmODYzZWU2MTMwYzA4YzUyNTMyM2EyMjE1ZDM0MWY5OWU4
YmEwMS4uNzdkMzI2Y2JkMGQ4ODRiY2QwYjJmYzA4NzEyMDBiYmI2Yjc3N2MzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaApAQCAtMjYsMjYgKzI2LDEwIEBACiAjaWZuZGVm
IENDSU9TdXJmYWNlRHJhd1F1YWRfaAogI2RlZmluZSBDQ0lPU3VyZmFjZURyYXdRdWFkX2gKIAot
I2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3
UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NJT1N1cmZhY2VEcmF3UXVhZCk7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gY3JlYXRl
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7Ci0KLSAgICBjb25z
dCBJbnRTaXplJiBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VTaXpl
OyB9Ci0gICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9p
b1N1cmZhY2VUZXh0dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ0lPU3VyZmFjZURyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7Ci0KLSAgICBJbnRT
aXplIG1faW9TdXJmYWNlU2l6ZTsKLSAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZVRleHR1cmVJZDsK
LX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCBDQ0lPU3Vy
ZmFjZURyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDAwYTM1
MWIyMmRiODQ0ZjdjNzk3YTgyOWM0ZDE2YWJmYTY2ZGE4MGEuLjQwNTI3ZWJjNmNhZDc5YWI5ZWJl
NmZmMjRlYzUwZGU3Y2Q4Y2U3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIK
KyNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJG
aWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0
cml4Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDgsNyArNDksNiBAQCBjbGFzcyBD
Q0xheWVyU29ydGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDUXVhZEN1
bGxlcjsKIGNsYXNzIENDUmVuZGVyZXI7Ci1jbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIGNsYXNz
IExheWVyQ2hyb21pdW07CiAKIGNsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggZGVlNTVi
ZjdmNmNmZWYxOTI0YmNhYjUzY2RlZWVlMTlkNjllMjhhYy4uODU1NmQ2NzI2MTc4ZWE5Y2M5Mzkz
MWVlNWU1NTNlNzI0MDMxYzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTI3LDE2ICsy
NywxNiBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NfaAogCiAjaW5jbHVkZSAiU2tDb2xvci5oIgor
I2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENDRHJhd1F1YWQ7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDUmVu
ZGVyU3VyZmFjZTsKLWNsYXNzIENDU2hhcmVkUXVhZFN0YXRlOwogCiAvLyBBIGxpc3Qgb2YgQ0NE
cmF3UXVhZCBvYmplY3RzLCBzb3J0ZWQgaW50ZXJuYWxseSBpbiBmcm9udC10by1iYWNrIG9yZGVy
LgogY2xhc3MgQ0NRdWFkTGlzdCA6IHB1YmxpYyBWZWN0b3I8T3duUHRyPENDRHJhd1F1YWQ+ID4g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCmluZGV4IDhkYzRmZjY2
YTFjNzE3M2JlNzM3NGE2MjVkYjk5Y2Y0MDdiMWQ2ZTMuLjZiM2NiMTY5ZDA0NmMzNjU2ZjY4MjBi
NTI3MTJkMmRhY2E5YjdiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5jcHAKQEAgLTI3LDE1ICsyNywxNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuaCIKIAordXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBh
c3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRl
cnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdR
dWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVy
ZUlkKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzcywgaXNSZXBsaWNhLCBmaWx0ZXJzLCBi
YWNrZ3JvdW5kRmlsdGVycywgbWFza1RleHR1cmVJZCkpOwogfQogCi1DQ1JlbmRlclBhc3NEcmF3
UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyog
cmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3Jv
dW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKLSAgICA6IENDRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBxdWFkUmVjdCkKK0NDUmVuZGVy
UGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1
cmVJZCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9z
aXRvclF1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwgbV9yZW5kZXJQYXNzKHJlbmRl
clBhc3MpCiAgICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCiAgICAgLCBtX2ZpbHRlcnMoZmls
dGVycykKQEAgLTQ1LDQgKzQ3LDEwIEBAIENDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBh
c3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiAgICAgQVNT
RVJUKG1fcmVuZGVyUGFzcyk7CiB9CiAKK2NvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRv
clF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9z
aXRvclF1YWQ6OlJlbmRlclBhc3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1Jl
bmRlclBhc3NEcmF3UXVhZCo+KHF1YWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQuaAppbmRleCAzY2M2ZjI2MDcxYTMzYzAyMzA2YWVhZDllMDhiMDg3MzMzNGUz
MWU4Li45ZTgxZTc2Y2ZiMTA0NmRhYzkyMGJiOWY5ZWM1NDVhMTcwYzM4ZGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
Q0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAK
LSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3JRdWFkLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC0zNCwxMCArMzQsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDQ1JlbmRlclBhc3M7CiAKLWNsYXNzIENDUmVuZGVyUGFzc0RyYXdR
dWFkIDogcHVibGljIENDRHJhd1F1YWQgeworY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBw
dWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJ
ZCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7CiAKICAgICBj
b25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBh
c3M7IH0KICAgICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBsaWNhOyB9
CkBAIC00Niw4ICs0Niw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KICAgICBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQogCisgICAgc3RhdGljIGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZCopOwogcHJpdmF0ZToKLSAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25l
ZCBtYXNrVGV4dHVyZUlkKTsKKyAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NS
ZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3Jv
dW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7CiAKICAgICBjb25zdCBDQ1JlbmRl
clBhc3MqIG1fcmVuZGVyUGFzczsKICAgICBib29sIG1faXNSZXBsaWNhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuaAppbmRleCAwMjllMWY2MDQ0MTRjY2ZlYjEzMDU4ZWY0YWFjODEzNzlmOTUw
OGY0Li5hOWI4ODE5NzQzN2NlYzJiYzQxZmVkZmFiMWY5MTUxYzY4ODgyMjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgor
I2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZp
bHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQyLDcgKzQzLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3Vs
bGVyOwogY2xhc3MgQ0NSZW5kZXJQYXNzOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFz
cyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIE1hbmFn
ZWRUZXh0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ZTA2ODFmZjVmYWZkMjNjNTg2Y2NhNzFmOWUxNDcwNTY4MjE3
MTVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRl
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgotCi0jaW5jbHVkZSAi
Y2MvQ0NNYXRoVXRpbC5oIgotCi11c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5z
Zm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVj
dCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ1NoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCBsYXllclRyYW5zZm9ybSwgbGF5ZXJS
ZWN0LCBzY2lzc29yUmVjdCwgb3BhY2l0eSwgb3BhcXVlKSk7Ci19Ci0KLUNDU2hhcmVkUXVhZFN0
YXRlOjpDQ1NoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVh
ZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3Jt
LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBm
bG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKLSAgICA6IG1fcXVhZFRyYW5zZm9ybShxdWFkVHJh
bnNmb3JtKQotICAgICwgbV9sYXllclRyYW5zZm9ybShsYXllclRyYW5zZm9ybSkKLSAgICAsIG1f
bGF5ZXJSZWN0KGxheWVyUmVjdCkKLSAgICAsIG1fc2Npc3NvclJlY3Qoc2Npc3NvclJlY3QpCi0g
ICAgLCBtX29wYWNpdHkob3BhY2l0eSkKLSAgICAsIG1fb3BhcXVlKG9wYXF1ZSkKLXsKLX0KLQot
Ym9vbCBDQ1NoYXJlZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0
Ci17Ci0gICAgLy8gTm90ZTogdGhpcyBkb2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0
aW9uIG1hdHJpY2VzLgotICAgIC8vIEFzc3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5k
IGhhdmUgaW50ZWdlciBzY2FsZXMgYW5kIHRyYW5zbGF0aW9ucy4KLSAgICBib29sIGNsaXBwZWQg
PSBmYWxzZTsKLSAgICBGbG9hdFF1YWQgcXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1YWQocXVhZFRy
YW5zZm9ybSgpLCBGbG9hdFF1YWQobGF5ZXJSZWN0KCkpLCBjbGlwcGVkKTsKLSAgICByZXR1cm4g
IWNsaXBwZWQgJiYgcXVhZC5pc1JlY3RpbGluZWFyKCkgJiYgcXVhZC5ib3VuZGluZ0JveCgpLmlz
RXhwcmVzc2libGVBc0ludFJlY3QoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0
YXRlLmgKaW5kZXggNDU0MGEwNmY4NGVlNTJkZmFjNWRlMzU2MDQ4ZWJiMThjNThkYjcyYy4uMDI3
NzEwMzczNGNhNTdmNzgxYTNjZTMyMTdmZmRlZmVmNjA0ZDc3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1No
YXJlZFF1YWRTdGF0ZS5oCkBAIC0yNiw0MCArMjYsMTAgQEAKICNpZm5kZWYgQ0NTaGFyZWRRdWFk
U3RhdGVfaAogI2RlZmluZSBDQ1NoYXJlZFF1YWRTdGF0ZV9oCiAKLSNpbmNsdWRlICJGbG9hdFF1
YWQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIENDU2hhcmVkUXVhZFN0YXRlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1NoYXJlZFF1YWRTdGF0ZSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0
JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOwotCi0gICAgLy8gVGhl
IHRyYW5zZm9ybSB0aGF0IHF1YWRzIGluIGEgQ0NEcmF3UXVhZCBzaG91bGQgYmUgdHJhbnNmb3Jt
ZWQgd2l0aC4KLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFk
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVHJhbnNmb3JtOyB9Ci0gICAgLy8gVGhl
IHRyYW5zZm9ybSB0aGF0IGxheWVyUmVjdCgpIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgot
ICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyYW5zZm9ybTsgfQotICAgIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJSZWN0OyB9Ci0gICAgY29uc3QgSW50
UmVjdCYgc2Npc3NvclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NjaXNzb3JSZWN0OyB9Ci0KLSAg
ICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9Ci0gICAgYm9vbCBp
c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9Ci0gICAgYm9vbCBpc0xheWVyQXhp
c0FsaWduZWRJbnRSZWN0KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgQ0NTaGFyZWRRdWFkU3Rh
dGUoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0
IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKLQotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9xdWFkVHJhbnNmb3JtOwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggbV9sYXllclRyYW5zZm9ybTsKLSAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OwotICAgIEludFJl
Y3QgbV9zY2lzc29yUmVjdDsKLSAgICBmbG9hdCBtX29wYWNpdHk7Ci0gICAgYm9vbCBtX29wYXF1
ZTsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlIEND
U2hhcmVkUXVhZFN0YXRlOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY2ODM2OWI2OWI3
MDk2ZWFjMzI1YTBmODE0OWZmODAwMGZlYjlmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NTb2xp
ZENvbG9yRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPEND
U29saWRDb2xvckRyYXdRdWFkPiBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCBTa0NvbG9yIGNvbG9yKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTb2xpZENvbG9y
RHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgY29sb3IpKTsKLX0KLQotQ0NTb2xp
ZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNv
bG9yKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlNvbGlk
Q29sb3IsIHF1YWRSZWN0KQotICAgICwgbV9jb2xvcihjb2xvcikKLXsKLSAgICBpZiAoU2tDb2xv
ckdldEEobV9jb2xvcikgPCAyNTUpCi0gICAgICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOwotICAg
IGVsc2UKLSAgICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7Ci19Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRD
b2xvckRyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oCmluZGV4IDgzZWEzNDA2NjE1NzAxMGYwZDEyOTJl
OGUxNTYzM2NlMmExNzNlYjEuLmI2YzBlZTAyNWVhM2FlMmJiY2FhZDczODVmY2ViYmMzY2E2OWY5
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyNSArMjYsMTAgQEAK
ICNpZm5kZWYgQ0NTb2xpZENvbG9yRHJhd1F1YWRfaAogI2RlZmluZSBDQ1NvbGlkQ29sb3JEcmF3
UXVhZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEND
U29saWRDb2xvckRyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENDU29saWRDb2xvckRyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1NvbGlkQ29sb3JEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgSW50UmVjdCYsIFNrQ29sb3IpOwotCi0gICAgU2tDb2xvciBjb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0KLXByaXZhdGU6Ci0gICAgQ0NTb2xpZENvbG9yRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvcik7
Ci0KLSAgICBTa0NvbG9yIG1fY29sb3I7Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9z
aXRvclNvbGlkQ29sb3JRdWFkIENDU29saWRDb2xvckRyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2YTFiYTI5OTIzZjZkMGUwMzE4NjVlM2E1NDJhODRiMTQwZTA4YTRhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ+IENDU3RyZWFt
VmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDU3RyZWFtVmlkZW9EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCB0ZXh0dXJlSWQsIG1hdHJpeCkpOwotfQotCi1DQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OkND
U3RyZWFtVmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCi0gICAgOiBDQ0RyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U3RyZWFtVmlkZW9Db250ZW50LCBxdWFkUmVj
dCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAgICAsIG1fbWF0cml4KG1hdHJpeCkK
LXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaAppbmRleCAz
MDM3MzQ4ZDM1NGY2ZWI3ZTk3OGE1NGU1Yzg3YTZkNmQ0NjIwYjZlLi5hMTg5MDYxMWE0NDFkMmRi
OGEyNDY3NmQzOGY4NWQzODRlZGVkZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVv
RHJhd1F1YWQuaApAQCAtMjYsMjcgKzI2LDEwIEBACiAjaWZuZGVmIENDU3RyZWFtVmlkZW9EcmF3
UXVhZF9oCiAjZGVmaW5lIENDU3RyZWFtVmlkZW9EcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9D
Q0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9z
aXRvclN0cmVhbVZpZGVvUXVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEND
U3RyZWFtVmlkZW9EcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ1N0cmVhbVZpZGVvRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDU3RyZWFtVmlkZW9EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeDsgfQotCi1w
cml2YXRlOgotICAgIENDU3RyZWFtVmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAg
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRyaXg7Ci19OwotCit0eXBlZGVm
IFdlYktpdDo6V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZCBDQ1N0cmVhbVZpZGVvRHJhd1F1
YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGJjYTk1ZmJlOGU2MTgxZDYzOTI2MTkxM2QxNGRl
MTJiMjljOWQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURy
YXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IENDVGV4dHVy
ZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVt
dWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlw
cGVkKSk7Ci19Ci0KLUNDVGV4dHVyZURyYXdRdWFkOjpDQ1RleHR1cmVEcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxv
YXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBDQ0RyYXdRdWFkOjpUZXh0dXJlQ29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX3Rl
eHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBs
aWVkQWxwaGEpCi0gICAgLCBtX3V2UmVjdCh1dlJlY3QpCi0gICAgLCBtX2ZsaXBwZWQoZmxpcHBl
ZCkKLXsKLX0KLQotdm9pZCBDQ1RleHR1cmVEcmF3UXVhZDo6c2V0TmVlZHNCbGVuZGluZygpCi17
Ci0gICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZURyYXdRdWFkLmgKaW5kZXggYTRiYWVmYTEzM2FmNGEwMjEzZThlNWY3ZjkxZGM5MmFhMGQ0M2E4
Ni4uMjhjM2Q5MTMyZmI1OGQ4ZGExMjBjY2Y5YzE1OWMxNzM0NTEwZDgyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJh
d1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVEcmF3UXVhZC5oCkBAIC0yNiwzMiArMjYsMTAgQEAKICNpZm5kZWYgQ0NUZXh0
dXJlRHJhd1F1YWRfaAogI2RlZmluZSBDQ1RleHR1cmVEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJj
Yy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NUZXh0dXJlRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRp
cGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7Ci0KLSAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiAgbV90ZXh0dXJlSWQ7IH0KLSAg
ICBib29sIHByZW11bHRpcGxpZWRBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxp
ZWRBbHBoYTsgfQotICAgIEZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVj
dDsgfQotICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQotCi0g
ICAgdm9pZCBzZXROZWVkc0JsZW5kaW5nKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ0NUZXh0dXJlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQg
dGV4dHVyZV9pZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZS
ZWN0LCBib29sIGZsaXBwZWQpOwotICAgIAotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAg
IGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7Ci0gICAgRmxvYXRSZWN0IG1fdXZSZWN0OwotICAg
IGJvb2wgbV9mbGlwcGVkOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZCBDQ1RleHR1cmVEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNWI2ZjY5ZjNjMjAx
NmY0ZTIzODc3M2YwZGM5NGM2OTU2YjAzOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFk
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4g
Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zm
c2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBi
b29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9v
bCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0
LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBz
d2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRv
bUVkZ2VBQSkpOwotfQotCi1DQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBj
b25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUs
IEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVk
Z2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFB
KQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAgLCBtX3Rl
eHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKLSAgICAsIG1fdGV4dHVyZVNpemUodGV4dHVyZVNp
emUpCi0gICAgLCBtX3RleHR1cmVGaWx0ZXIodGV4dHVyZUZpbHRlcikKLSAgICAsIG1fc3dpenps
ZUNvbnRlbnRzKHN3aXp6bGVDb250ZW50cykKLSAgICAsIG1fbGVmdEVkZ2VBQShsZWZ0RWRnZUFB
KQotICAgICwgbV90b3BFZGdlQUEodG9wRWRnZUFBKQotICAgICwgbV9yaWdodEVkZ2VBQShyaWdo
dEVkZ2VBQSkKLSAgICAsIG1fYm90dG9tRWRnZUFBKGJvdHRvbUVkZ2VBQSkKLXsKLSAgICBpZiAo
aXNBbnRpYWxpYXNlZCgpKQotICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOwotICAgIG1f
b3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5o
CmluZGV4IDMzNTAxYTgwNmNmYWZmOTYwZjI0YzZkZDZmMWM3ODIwYTE1Nzg4YzUuLmQ1MzBmNGE0
OGYyOTQ5ZWIzYWNiMjhhNjNjMmI3NmNhYTdhOTQ1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1
YWQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw0NCArMjYsMTAgQEAKICNpZm5kZWYgQ0NUaWxlRHJhd1F1YWRfaAogI2RlZmluZSBDQ1Rp
bGVEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKLSNpbmNsdWRlICJj
Yy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVD
b250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VB
QSwgYm9vbCBib3R0b21FZGdlQUEpOwotCi0gICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotICAgIEludFBvaW50IHRleHR1cmVPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7IH0KLSAgICBJbnRTaXplIHRleHR1
cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQotICAgIEdDM0RpbnQgdGV4
dHVyZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUZpbHRlcjsgfQotICAgIGJvb2wg
c3dpenpsZUNvbnRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zd2l6emxlQ29udGVudHM7IH0KLQot
ICAgIGJvb2wgbGVmdEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdEVkZ2VBQTsgfQotICAg
IGJvb2wgdG9wRWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV90b3BFZGdlQUE7IH0KLSAgICBib29s
IHJpZ2h0RWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV9yaWdodEVkZ2VBQTsgfQotICAgIGJvb2wg
Ym90dG9tRWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21FZGdlQUE7IH0KLQotICAgIGJv
b2wgaXNBbnRpYWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdl
QUEoKSB8fCByaWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgQ0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0
ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywg
Ym9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBi
b3R0b21FZGdlQUEpOwotCi0gICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKLSAgICBJ
bnRQb2ludCBtX3RleHR1cmVPZmZzZXQ7Ci0gICAgSW50U2l6ZSBtX3RleHR1cmVTaXplOwotICAg
IEdDM0RpbnQgbV90ZXh0dXJlRmlsdGVyOwotICAgIGJvb2wgbV9zd2l6emxlQ29udGVudHM7Ci0g
ICAgYm9vbCBtX2xlZnRFZGdlQUE7Ci0gICAgYm9vbCBtX3RvcEVkZ2VBQTsKLSAgICBib29sIG1f
cmlnaHRFZGdlQUE7Ci0gICAgYm9vbCBtX2JvdHRvbUVkZ2VBQTsKLX07Ci0KK3R5cGVkZWYgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQgQ0NUaWxlRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NZVVZWaWRlb0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5jcHAKaW5kZXggYTJkNjJiYTQ0Yzg2NTc2
NmY5YWEyOTk1MGU0OGE1MmFkMjYxZWI0Ny4uNDNmMmUyZjZmNTc4ZThkNDhlODY2MTk5MGFhYjc3
YTM3ODYxMzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwCkBAIC0y
NywxOSArMjcsMjcgQEAKIAogI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgogCit1
c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiBDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNyZWF0
ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSkKK1Bhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdR
dWFkPiBDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB2UGxhbmUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1lVVlZp
ZGVvRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgeVBsYW5lLCB1UGxhbmUsIHZQ
bGFuZSkpOwogfQogCi1DQ1lVVlZpZGVvRHJhd1F1YWQ6OkNDWVVWVmlkZW9EcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllcklt
cGw6OkZyYW1lUGxhbmUmIHZQbGFuZSkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRl
LCBDQ0RyYXdRdWFkOjpZVVZWaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQorQ0NZVVZWaWRlb0RyYXdR
dWFkOjpDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25z
dCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQ
bGFuZSYgdlBsYW5lKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBX
ZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250ZW50LCBxdWFkUmVjdCkKICAgICAsIG1feVBs
YW5lKHlQbGFuZSkKICAgICAsIG1fdVBsYW5lKHVQbGFuZSkKICAgICAsIG1fdlBsYW5lKHZQbGFu
ZSkKIHsKIH0KIAorY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBDQ1lVVlZpZGVvRHJhd1F1YWQ6
Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQorewor
ICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpZVVZWaWRl
b0NvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1lVVlZpZGVvRHJhd1F1
YWQqPihxdWFkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaAppbmRl
eCAwY2Q3NThjNWIwZjAwM2Q2NDY1ZGI5MzM2Y2I5N2VmNWIxZjI0M2NmLi42Njg0YWQ4OTc4NDE1
MDdhYjMxYmZjMzNhMDVkYjE4NmJlZDAwZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJh
d1F1YWQuaApAQCAtMjYsMjMgKzI2LDI0IEBACiAjaWZuZGVmIENDWVVWVmlkZW9EcmF3UXVhZF9o
CiAjZGVmaW5lIENDWVVWVmlkZW9EcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yUXVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkIDogcHVibGljIENDRHJh
d1F1YWQgeworY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkIDogcHVibGljIFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDWVVWVmlkZW9EcmF3UXVh
ZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiBj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHZQbGFuZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiBjcmVh
dGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
RnJhbWVQbGFuZSYgeVBsYW5lKCkgY29uc3QgeyByZXR1cm4gbV95UGxhbmU7IH0KICAgICBjb25z
dCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUoKSBjb25zdCB7IHJldHVybiBt
X3VQbGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdlBsYW5lOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgQ0NZVVZW
aWRlb0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVh
ZCopOwogcHJpdmF0ZToKLSAgICBDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSk7CisgICAgQ0NZVVZWaWRl
b0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUs
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKIAogICAgIENDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmUgbV95UGxhbmU7CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSBt
X3VQbGFuZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVz
dENvbW1vbi5jcHAKaW5kZXggYjM1ODE5NzU5ZDQxNDI0OTdkODI4NTI5MDNkNjBlNjU1MjAwYTQ1
MS4uNmNjNGQyYzM5Y2FjYTAyNDE5ZGE0M2E1ODUxZGQ2YjY5YjdkY2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAKQEAgLTQz
LDEwICs0MywxMSBAQCB2b2lkIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChjb25zdCBDQ1F1
YWRMaXN0JiBxdWFkcywgY29uc3QgSW50UmVjdCYgcmVjdCkKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQ0NEcmF3UXVhZCogcXVhZCA9
IHF1YWRzW2ldLmdldCgpOworICAgICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJl
Y3QoKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShyZWN0LmNvbnRhaW5zKHF1YWQtPnF1YWRSZWN0
KCkpKSA8PCBxdWFkU3RyaW5nIDw8IGk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlbWFpbmluZy5j
b250YWlucyhxdWFkLT5xdWFkUmVjdCgpKSkgPDwgcXVhZFN0cmluZyA8PCBpOwotICAgICAgICBy
ZW1haW5pbmcuc3VidHJhY3QoUmVnaW9uKHF1YWQtPnF1YWRSZWN0KCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUocmVjdC5jb250YWlucyhxdWFkUmVjdCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocmVtYWluaW5nLmNvbnRhaW5zKHF1YWRSZWN0KSkgPDwgcXVhZFN0
cmluZyA8PCBpOworICAgICAgICByZW1haW5pbmcuc3VidHJhY3QoUmVnaW9uKHF1YWRSZWN0KSk7
CiAgICAgfQogCiAgICAgRVhQRUNUX1RSVUUocmVtYWluaW5nLmlzRW1wdHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllcklt
cGxUZXN0LmNwcAppbmRleCBiNDc2ODVkZjQ0YzAxN2I1YThlNjBiMTlhZjMxZmJkNmJmZjNmYzZk
Li5iZWI0NzE1YjA4ZmZkMDA0MWNiYzUzMTg1MzIxNzM4ZTgxNzYzOWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBs
VGVzdC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0
LCB2ZXJpZnlDb3JyZWN0QmFja2dyb3VuZENvbG9ySW5RdWFkKQogICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7
CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwotICAg
IEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0tPnRvU29saWRDb2xvckRyYXdRdWFk
KCktPmNvbG9yKCksIHRlc3RDb2xvcik7CisgICAgRVhQRUNUX0VRKENDU29saWRDb2xvckRyYXdR
dWFkOjptYXRlcmlhbENhc3QocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLmdldCgpKS0+Y29sb3Io
KSwgdGVzdENvbG9yKTsKIH0KIAogVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJp
ZnlDb3JyZWN0T3BhY2l0eUluUXVhZCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBURVNUKENDU29saWRD
b2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RPcGFjaXR5SW5RdWFkKQogICAgIGxheWVy
LT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3Np
bmdUaWxlcyk7CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwg
MVUpOwotICAgIEVYUEVDVF9FUShvcGFjaXR5LCBxdWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0tPnRv
U29saWRDb2xvckRyYXdRdWFkKCktPm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHks
IENDU29saWRDb2xvckRyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZEN1bGxlci5xdWFkTGlzdCgp
WzBdLmdldCgpKS0+b3BhY2l0eSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151390</attachid>
            <date>2012-07-09 19:31:49 -0700</date>
            <delta_ts>2012-07-11 14:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90582-20120709193149.patch</filename>
            <type>text/plain</type>
            <size>137966</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyOGJjZDU2NjJkMmRj
ODlkMmZlMTJiODJhNDQ4OGYyODkzYzgyM2NjLi44ZjJhNjc2YjA4YWFhZGFjYmY5NmE1N2Y4YTk0
NDk1NDg3ZjZjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMi0wNy0wNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIGNvbXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NT
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQsIGFuZCBhbGwgYnV0IHR3byBDQypEcmF3UXVhZAor
ICAgICAgICBjbGFzc2VzIHRvIHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAg
dG8gcHVzaGluZyB0aGVtCisgICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3Ig
dGhlIHViZXJjb21wb3NpdG9yLgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxp
emUgdGhlIGNsYXNzIGhpZXJhcmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20g
YXMgV2ViSW5wdXRFdmVudC4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQor
ICAgICAgICByZXF1aXJlbWVudHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBz
aXplLCBhbmQgYSBwYWNraW5nCisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUg
ZGF0YSBtZW1iZXJzIGFyZSBmaW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBh
CisgICAgICAgIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2Yg
dGhhdCwgd2UgY2FuIG1haW50YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5k
IGNvbnZlbmllbnQgQVBJcyAoYmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikg
YXMgdGhlIG9yaWdpbmFsIGNsYXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9u
LCB0aGUgb3JpZ2luYWwgV2ViQ29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRv
CisgICAgICAgIHRoZSBuZXcgY2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1
YWRTdGF0ZSB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENf
U1RSVUNUX1RSQUlUUyBtYWNybywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3Vz
dG9tCisgICAgICAgIHNlcmlhbGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhl
IHBvaW50ZXJzIGZyb20gcXVhZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAg
ICAgICAtIEkgY29udmVydGVkIHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRl
cmlhbENhc3QoKSBtZXRob2RzCisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiAgVGhhdCB3YXksIHRoZSBXZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24n
dCBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAg
LSBRdWFkIGNsYXNzZXMgbm90IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4K
KyAgICAgICAgbm9uLXViZXJjb21wb3NpdG9yIG1vZGUuICBDQ1JlbmRlclBhc3NEcmF3UXVhZCBh
bmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgIGFyZSBjdXJyZW50bHkgbm9uLVBPRCBhbmQg
SSBsZWZ0IHRoZW0gaW4gdGhlaXIgb3JpZ2luYWwgZmlsZXMuCisKKyAgICAgICAgVGhpcyBhcHBy
b2FjaCBpcyB0aGUgYmVzdCBJJ3ZlIGZvdW5kIHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFs
bAorICAgICAgICBXZWJDb3JlLWZhY2luZyBBUElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29k
ZSBkdXBsaWNhdGlvbiAobmV3IHF1YWQKKyAgICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUg
YWRkZWQgYnkgbW9kaWZ5aW5nIG9ubHkgb25lIHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28g
c2hvdWxkIG5vdCBiZSBhbiB1bnJlYXNvbmFibGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVy
IGNvZGUKKyAgICAgICAgcmVxdWlyZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclF1YWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpsYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzTGF5ZXJBeGlzQWxp
Z25lZEludFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzRGVidWdR
dWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6Om1hdGVyaWFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRTaGFyZWRRdWFkU3RhdGUpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckRyYXdRdWFkLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6Y29sb3IpOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnV2
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6dGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpwcmVtdWx0
aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
OmZsaXBwZWQpOgorCiAyMDEyLTA3LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIGEgV2ViS2l0OjpXZWIqIHdyYXBwZXIg
Zm9yIHRoZSBjYyBhbmltYXRpb24gY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk3MDM3NmZkMGE4ZTky
NjFhYjViNTlhMzlmNDliNzc5MTI4ZWM4ZDguLjc0YzE2ZmNhODFkMTU1NTY0ZjY1ZTUxODk2YzY2
ODllMjlhZmZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTItMDctMDQgIEFs
ZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TW92ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIENDU2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkLCBhbmQgYWxsIGJ1dCB0d28gQ0MqRHJhd1F1YWQKKyAg
ICAgICAgY2xhc3NlcyB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBzdGVwIHRv
IHB1c2hpbmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkgZm9yIHRo
ZSB1YmVyY29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2VyaWFsaXpl
IHRoZSBjbGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIGFz
IFdlYklucHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhyZWUKKyAg
ICAgICAgcmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5pbmcgc2l6
ZSwgYW5kIGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2YXRlIGRh
dGEgbWVtYmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBhbmQgYQor
ICAgICAgICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNlIG9mIHRo
YXQsIHdlIGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9uIGFuZCBj
b252ZW5pZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJT04pIGFz
IHRoZSBvcmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNpdGlvbiwg
dGhlIG9yaWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRlZiB0bwor
ICAgICAgICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFyZWRRdWFk
U3RhdGUgd2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAgSVBDX1NU
UlVDVF9UUkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBBIGN1c3Rv
bQorICAgICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWluIHRoZSBw
b2ludGVycyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisKKyAgICAg
ICAgLSBJIGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8gbWF0ZXJp
YWxDYXN0KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xhc3Nlcy4g
IFRoYXQgd2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRvZXNuJ3Qg
bmVlZCB0byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAgICAgIC0g
UXVhZCBjbGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2VkIGluCisg
ICAgICAgIG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5k
IENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICBhcmUgY3VycmVudGx5IG5vbi1QT0QgYW5kIEkg
bGVmdCB0aGVtIGluIHRoZWlyIG9yaWdpbmFsIGZpbGVzLgorCisgICAgICAgIFRoaXMgYXBwcm9h
Y2ggaXMgdGhlIGJlc3QgSSd2ZSBmb3VuZCBzbyBmYXIsIHNpbmNlIGl0IHByZXNlcnZlcyBhbGwK
KyAgICAgICAgV2ViQ29yZS1mYWNpbmcgQVBJcyBhbmQgYXZvaWRzIHVubmVjZXNzYXJ5IGNvZGUg
ZHVwbGljYXRpb24gKG5ldyBxdWFkCisgICAgICAgIHR5cGVzIG9yIG1lbWJlcnMgY2FuIGJlIGFk
ZGVkIGJ5IG1vZGlmeWluZyBvbmx5IG9uZSBwbGFjZSkuICBUaGVyZQorICAgICAgICBhbHNvIHNo
b3VsZCBub3QgYmUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiBjdXN0b20gc2VyaWFsaXplciBj
b2RlCisgICAgICAgIHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vLW9wIHJl
ZmFjdG9yaW5nLikKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6V2ViQ29tcG9z
aXRvclF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJsZVJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnNldE5l
ZWRzQmxlbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaDoKKyAgICAgICAgKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3JkZXJE
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVy
aWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdC
b3JkZXJEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpDQ1N0
cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAg
ICAgIChDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVh
ZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAo
Q0NZVVZWaWRlb0RyYXdRdWFkKToKKwogMjAxMi0wNy0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBDQ1Njb3BlZFRleHR1
cmUgY2xhc3MgZm9yIGNyZWF0aW5nL2ZyZWVpbmcgdGV4dHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggZTc1MWVlMTY0MWNmMGI4MjY4NGZlZDYxODhjZmRiZmE2MDNjNTM2Zi4uYTcy
MDMyZjU4NjU3OTNhNDc1ZWVkYmY0NDgyYWZkYzgzNGI0YjE1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMi0wNy0wNCAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNb3ZlIGNvbXBvc2l0b3Ig
cXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NTaGFyZWRRdWFkU3RhdGUsIEND
RHJhd1F1YWQsIGFuZCBhbGwgYnV0IHR3byBDQypEcmF3UXVhZAorICAgICAgICBjbGFzc2VzIHRv
IHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAgdG8gcHVzaGluZyB0aGVtCisg
ICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3IgdGhlIHViZXJjb21wb3NpdG9y
LgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxpemUgdGhlIGNsYXNzIGhpZXJh
cmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20gYXMgV2ViSW5wdXRFdmVudC4g
IEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQorICAgICAgICByZXF1aXJlbWVu
dHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBzaXplLCBhbmQgYSBwYWNraW5n
CisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUgZGF0YSBtZW1iZXJzIGFyZSBm
aW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBhCisgICAgICAgIGRlZmF1bHQg
Y29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgY2FuIG1haW50
YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5kIGNvbnZlbmllbnQgQVBJcyAo
YmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikgYXMgdGhlIG9yaWdpbmFsIGNs
YXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9uLCB0aGUgb3JpZ2luYWwgV2Vi
Q29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRvCisgICAgICAgIHRoZSBuZXcg
Y2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1YWRTdGF0ZSB3aWxsIGJlIHNl
cmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENfU1RSVUNUX1RSQUlUUyBtYWNy
bywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3VzdG9tCisgICAgICAgIHNlcmlh
bGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhlIHBvaW50ZXJzIGZyb20gcXVh
ZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAgICAgICAtIEkgY29udmVydGVk
IHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRlcmlhbENhc3QoKSBtZXRob2Rz
CisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2VzLiAgVGhhdCB3YXksIHRoZSBX
ZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24ndCBuZWVkIHRvIGtub3cgYWJv
dXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAgLSBRdWFkIGNsYXNzZXMgbm90
IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4KKyAgICAgICAgbm9uLXViZXJj
b21wb3NpdG9yIG1vZGUuICBDQ1JlbmRlclBhc3NEcmF3UXVhZCBhbmQgQ0NZVVZWaWRlb0RyYXdR
dWFkCisgICAgICAgIGFyZSBjdXJyZW50bHkgbm9uLVBPRCBhbmQgSSBsZWZ0IHRoZW0gaW4gdGhl
aXIgb3JpZ2luYWwgZmlsZXMuCisKKyAgICAgICAgVGhpcyBhcHByb2FjaCBpcyB0aGUgYmVzdCBJ
J3ZlIGZvdW5kIHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFsbAorICAgICAgICBXZWJDb3Jl
LWZhY2luZyBBUElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29kZSBkdXBsaWNhdGlvbiAobmV3
IHF1YWQKKyAgICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUgYWRkZWQgYnkgbW9kaWZ5aW5n
IG9ubHkgb25lIHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28gc2hvdWxkIG5vdCBiZSBhbiB1
bnJlYXNvbmFibGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVyIGNvZGUKKyAgICAgICAgcmVx
dWlyZWQuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHA6CisgICAgICAg
IChDQ0xheWVyVGVzdENvbW1vbjo6dmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KToKKyAgICAg
ICAgKiB0ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5
ZXJUZXN0Q29tbW9uOjpURVNUKToKKwogMjAxMi0wNy0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBDQ1Njb3BlZFRleHR1
cmUgY2xhc3MgZm9yIGNyZWF0aW5nL2ZyZWVpbmcgdGV4dHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkK
aW5kZXggYTZiMzVmZDkzOGU4YTA4OTI3YTZjZTFjZjk3NDRkNzFlNGM0YTYzMi4uNDY1ZGMzMTJj
ZDE3NGQ1Y2Q3ZmUzMDcwODFlZjQwYzE3YjYzNDBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAg
LTQzLDYgKzQzLDE1IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2Fy
ZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaCcsCisgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmgnLAorICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oJywKKyAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9R
dWFkLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxl
UXVhZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5oJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2Fy
ZFF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2UwMmJiZmZhNDMyNjI3Zjk0ZjI1ZWM1ZWRh
MjkyZjg5OWQxYjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkX2gKKyNkZWZpbmUg
V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWRfaAorCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
clF1YWQuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVz
aCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQgOiBwdWJsaWMgV2Vi
Q29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkPiBjcmVhdGUo
Y29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKKyNlbmRpZgorCisgICAgc3RhdGljIGNvbnN0IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9h
cmRRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvckNoZWNrZXJib2Fy
ZFF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKyNlbmRpZgorfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9z
aXRvckRlYnVnQm9yZGVyUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMxODllZWQxZjEzNjk0
ZDkyOTU5NjYyMzg0YzA0YjcwYmNkN2I1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5oCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWRf
aAorI2RlZmluZSBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkX2gKKworI2luY2x1ZGUgIlNr
Q29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3Np
dG9yRGVidWdCb3JkZXJRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21w
b3NpdG9yRGVidWdCb3JkZXJRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwor
I2VuZGlmCisKKyAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfTsK
KyAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisKKyAgICBzdGF0aWMg
Y29uc3QgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdl
YkNvbXBvc2l0b3JRdWFkKik7Citwcml2YXRlOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgp
OworI2VuZGlmCisKKyAgICBTa0NvbG9yIG1fY29sb3I7CisgICAgaW50IG1fd2lkdGg7Cit9Owor
CisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVkN2ViMWNiZDAxNDQ3MzM0Mjg5MTA3YjIzNmFlOTFlNDRjNTRkMjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2luY2x1ZGUgIldlYlNp
emUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VR
dWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwg
dW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgaW9T
dXJmYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlU2l6ZTsgfQorICAgIHVuc2ln
bmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlVGV4dHVy
ZUlkOyB9CisjZW5kaWYKKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKik7Citwcml2YXRlOgor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFk
KGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9T
dXJmYWNlVGV4dHVyZUlkKTsKKyNlbmRpZgorCisgICAgV2ViU2l6ZSBtX2lvU3VyZmFjZVNpemU7
CisgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VUZXh0dXJlSWQ7Cit9OworCisjcHJhZ21hIHBhY2so
cG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ODY2M2E2MjMzZDQ1OWM4ZTY1
MTYyZGJlOTc5MGIyYTUyNmI0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclF1
YWRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV0FSTklORyEgQWxs
IFdlYkNvbXBvc2l0b3JYWVpRdWFkIGNsYXNzZXMgbXVzdCByZW1haW4gUE9EcyAocGxhaW4gb2xk
IGRhdGEpLgorLy8gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgInNlcmlhbGl6YWJsZSIgYnkgY29w
eWluZyB0aGVpciByYXcgYnl0ZXMsIHNvIHRoZXkKKy8vIG11c3Qgbm90IGNvbnRhaW4gYW55IG5v
bi1iaXQtY29weWFibGUgbWVtYmVyIHZhcmlhYmxlcyEKKy8vCisvLyBGdXJ0aGVybW9yZSwgdGhl
IGNsYXNzIG1lbWJlcnMgbmVlZCB0byBiZSBwYWNrZWQgc28gdGhleSBhcmUgYWxpZ25lZAorLy8g
cHJvcGVybHkgYW5kIGRvbid0IGhhdmUgcGFkZGluZ3MvZ2Fwcywgb3RoZXJ3aXNlIG1lbW9yeSBj
aGVjayB0b29scworLy8gbGlrZSBWYWxncmluZCB3aWxsIGNvbXBsYWluIGFib3V0IHVuaW5pdGlh
bGl6ZWQgbWVtb3J5IHVzYWdlIHdoZW4KKy8vIHRyYW5zZmVycmluZyB0aGVzZSBjbGFzc2VzIG92
ZXIgdGhlIHdpcmUuCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworLy8gV2ViQ29tcG9zaXRvclF1
YWQgaXMgYSBiYWcgb2YgZGF0YSB1c2VkIGZvciBkcmF3aW5nIGEgcXVhZC4gQmVjYXVzZSBkaWZm
ZXJlbnQKKy8vIG1hdGVyaWFscyBuZWVkIGRpZmZlcmVudCBiaXRzIG9mIHBlci1xdWFkIGRhdGEg
dG8gcmVuZGVyLCBjbGFzc2VzIHRoYXQgZGVyaXZlCisvLyBmcm9tIFdlYkNvbXBvc2l0b3JRdWFk
IHN0b3JlIGFkZGl0aW9uYWwgZGF0YSBpbiB0aGVpciBkZXJpdmVkIGluc3RhbmNlLiBUaGUgTWF0
ZXJpYWwKKy8vIGVudW0gaXMgdXNlZCB0byAic2FmZWx5IiBkb3duY2FzdCB0byB0aGUgZGVyaXZl
ZCBjbGFzcy4KK2NsYXNzIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyAgICBlbnVtIE1h
dGVyaWFsIHsKKyAgICAgICAgSW52YWxpZCwKKyAgICAgICAgQ2hlY2tlcmJvYXJkLAorICAgICAg
ICBEZWJ1Z0JvcmRlciwKKyAgICAgICAgSU9TdXJmYWNlQ29udGVudCwKKyAgICAgICAgUmVuZGVy
UGFzcywKKyAgICAgICAgVGV4dHVyZUNvbnRlbnQsCisgICAgICAgIFNvbGlkQ29sb3IsCisgICAg
ICAgIFRpbGVkQ29udGVudCwKKyAgICAgICAgWVVWVmlkZW9Db250ZW50LAorICAgICAgICBTdHJl
YW1WaWRlb0NvbnRlbnQsCisgICAgfTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IFdlYkNvcmU6OkludFJlY3QgcXVhZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRSZWN0OyB9
CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybTsgfQorICAgIGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclRyYW5zZm9ybTsgfQorICAgIFdlYkNvcmU6OkludFJl
Y3QgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVj
dDsgfQorICAgIFdlYkNvcmU6OkludFJlY3Qgc2Npc3NvclJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFF1YWRTdGF0ZS0+c2Npc3NvclJlY3Q7IH0KKyAgICBmbG9hdCBvcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHk7IH0KKyAgICAvLyBGb3IgdGhl
IHB1cnBvc2VzIG9mIGJsZW5kaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
cXVhZCBhcmUgb3BhcXVlPworICAgIFdlYkNvcmU6OkludFJlY3Qgb3BhcXVlUmVjdCgpIGNvbnN0
OworICAgIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGlu
ZyB8fCAhb3BhcXVlUmVjdCgpLmNvbnRhaW5zKG1fcXVhZFZpc2libGVSZWN0KTsgfQorICAgIGJv
b2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVh
ZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KKworICAgIC8vIEFsbG93cyBj
aGFuZ2luZyB0aGUgcmVjdCB0aGF0IGdldHMgZHJhd24gdG8gbWFrZSBpdCBzbWFsbGVyLiBQYXJh
bWV0ZXIgcGFzc2VkCisgICAgLy8gaW4gd2lsbCBiZSBjbGlwcGVkIHRvIHF1YWRSZWN0KCkuCisg
ICAgdm9pZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAg
IFdlYkNvcmU6OkludFJlY3QgcXVhZFZpc2libGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFk
VmlzaWJsZVJlY3Q7IH0KKyAgICBib29sIGlzRGVidWdRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcjsgfQorI2VuZGlmCisKKyAgICBNYXRlcmlhbCBtYXRlcmlh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWw7IH0KKworICAgIC8vIFJldHVybnMgdHJhbnNm
ZXIgc2l6ZSBvZiB0aGlzIG9iamVjdCBiYXNlZCBvbiB0aGUgZGVyaXZlZCBjbGFzcyAoYnkKKyAg
ICAvLyBsb29raW5nIGF0IHRoZSBtYXRlcmlhbCB0eXBlKS4KKyAgICB1bnNpZ25lZCBzaXplKCkg
Y29uc3Q7CisKKyAgICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZTsgfQorICAgIHZvaWQg
c2V0U2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSkgeyBtX3NoYXJlZFF1YWRTdGF0ZSA9IHNoYXJlZFF1YWRTdGF0ZTsgfQor
Citwcm90ZWN0ZWQ6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRv
clF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CisjZW5kaWYKKworICAgIC8vIFN0b3JlcyBzdGF0ZSBjb21t
b24gdG8gYSBsYXJnZSBidW5kbGUgb2YgcXVhZHM7IGtlcHQgc2VwYXJhdGUgZm9yIG1lbW9yeQor
ICAgIC8vIGVmZmljaWVuY3kuIFRoZXJlIGlzIHNwZWNpYWwgdHJlYXRtZW50IHRvIHJlY29uc3Ry
dWN0IHRoZXNlIHBvaW50ZXJzCisgICAgLy8gZHVyaW5nIHNlcmlhbGl6YXRpb24uCisgICAgY29u
c3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogbV9zaGFyZWRRdWFkU3RhdGU7CisKKyAg
ICBNYXRlcmlhbCBtX21hdGVyaWFsOworICAgIFdlYlJlY3QgbV9xdWFkUmVjdDsKKyAgICBXZWJS
ZWN0IG1fcXVhZFZpc2libGVSZWN0OworCisgICAgLy8gQnkgZGVmYXVsdCwgdGhlIHNoYXJlZCBx
dWFkIHN0YXRlIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBxdWFkIGlzCisgICAgLy8g
b3BhcXVlIG9yIG5lZWRzIGJsZW5kaW5nLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHdp
dGggdGhlc2UKKyAgICAvLyB2YXJpYWJsZXMuCisgICAgYm9vbCBtX3F1YWRPcGFxdWU7CisgICAg
Ym9vbCBtX25lZWRzQmxlbmRpbmc7CisKKyAgICAvLyBCZSBkZWZhdWx0LCB0aGlzIHJlY3QgaXMg
ZW1wdHkuIEl0IGlzIHVzZWQgd2hlbiB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgYW5kIGFib3ZlCisg
ICAgLy8gdmFyaWFibGVzIGRldGVybWluZSB0aGF0IHRoZSBxdWFkIGlzIG5vdCBmdWxseSBvcGFx
dWUgYnV0IG1heSBiZSBwYXJ0aWFsbHkgb3BhcXVlLgorICAgIFdlYlJlY3QgbV9vcGFxdWVSZWN0
OworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhjYTM3NWIzZjJlNDk3ODAwYmQ1NzNlZWZkZjBmM2Q3
N2UxZTNlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGVfaAorI2RlZmluZSBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjZW5kaWYKKyNpbmNsdWRlICJXZWJSZWN0LmgiCisjaW5jbHVkZSAi
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgeworcHVibGljOgorICAgIC8vIFRoZSB0cmFu
c2Zvcm0gdGhhdCBXZWJDb21wb3NpdG9yUXVhZHMgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIHdpdGgu
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybTsKKyAgICAvLyBUaGUg
dHJhbnNmb3JtIHRoYXQgbGF5ZXJSZWN0IHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgorICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgIFdlYlJlY3QgbGF5
ZXJSZWN0OworICAgIFdlYlJlY3Qgc2Npc3NvclJlY3Q7CisgICAgZmxvYXQgb3BhY2l0eTsKKyAg
ICBib29sIG9wYXF1ZTsKKworICAgIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUoKTsKKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJh
bnNmb3JtLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAg
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJh
bnNmb3JtLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAg
Ym9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWIyNDYyMWM5
NjQ4MTQxYTM0MGU3YWViNmU2ZjYwNDVjMzY3ZmRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWRfaAorCisjaW5jbHVkZSAi
U2tDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CitwdWJsaWM6
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29t
cG9zaXRvclNvbGlkQ29sb3JRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yKTsKKyNlbmRpZgorCisg
ICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07CisKKyAgICBzdGF0
aWMgY29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKiBtYXRlcmlhbENhc3QoY29uc3Qg
V2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisgICAgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgU2tDb2xvcik7CisjZW5kaWYK
KworICAgIFNrQ29sb3IgbV9jb2xvcjsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2YTNjZWFiNGI2
YzMzZjEzZDUzOWNiZmZkYmFmODExMTFmYTM1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaApA
QCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9R
dWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZF9oCisKKyNpbmNsdWRl
ICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNwcmFnbWEgcGFjayhw
dXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkIDogcHVibGljIFdl
YkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkPiBjcmVhdGUo
Y29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7
CisjZW5kaWYKKworICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUlkOyB9CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9CisKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRv
clN0cmVhbVZpZGVvUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKik7
Citwcml2YXRlOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkNvbXBvc2l0b3JT
dHJlYW1WaWRlb1F1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbWF0cml4OworfTsKKworI3ByYWdtYSBwYWNrKHBv
cCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZTZmZDNl
NmQzMTgyNmYyNTEyYTgwMjYzNzI3OWY0MzI3MjYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZF9o
CisjZGVmaW5lIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZF9oCisKKyNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVkZSAiV2ViRmxv
YXRSZWN0LmgiCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1
c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCA6IHB1YmxpYyBXZWJDb21w
b3NpdG9yUXVhZCB7CitwdWJsaWM6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkPiBjcmVhdGUoY29uc3QgV2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNp
Z25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
dXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0KKyNlbmRpZgorCisgICAgdW5zaWdu
ZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAgICBib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxpZWRBbHBoYTsg
fQorICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQorCisgICAg
dm9pZCBzZXROZWVkc0JsZW5kaW5nKCk7CisKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3By
aXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIHByZW11bHRpcGxp
ZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7
CisjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIGJvb2wgbV9wcmVtdWx0
aXBsaWVkQWxwaGE7CisgICAgV2ViRmxvYXRSZWN0IG1fdXZSZWN0OworICAgIGJvb2wgbV9mbGlw
cGVkOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlZDMxYjI0NTdiYTYyN2I4MWMxODg5OTIxNDUxZjM5ZWQ5ZjU3NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JUaWxlUXVhZC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBv
c2l0b3JUaWxlUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JUaWxlUXVhZF9oCisKKyNpbmNs
dWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgor
I2luY2x1ZGUgIldlYlBvaW50LmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVz
aCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclRpbGVRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0
b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcXVhZFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6
emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRF
ZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCB0ZXh0dXJlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlT2Zmc2V0OyB9CisgICAg
V2ViQ29yZTo6SW50U2l6ZSB0ZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZVNp
emU7IH0KKyAgICBHQzNEaW50IHRleHR1cmVGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVGaWx0ZXI7IH0KKyAgICBib29sIHN3aXp6bGVDb250ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
c3dpenpsZUNvbnRlbnRzOyB9CisKKyAgICBib29sIGxlZnRFZGdlQUEoKSBjb25zdCB7IHJldHVy
biBtX2xlZnRFZGdlQUE7IH0KKyAgICBib29sIHRvcEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1f
dG9wRWRnZUFBOyB9CisgICAgYm9vbCByaWdodEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1fcmln
aHRFZGdlQUE7IH0KKyAgICBib29sIGJvdHRvbUVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90
dG9tRWRnZUFBOyB9CisKKyAgICBib29sIGlzQW50aWFsaWFzZWQoKSBjb25zdCB7IHJldHVybiBs
ZWZ0RWRnZUFBKCkgfHwgdG9wRWRnZUFBKCkgfHwgcmlnaHRFZGdlQUEoKSB8fCBib3R0b21FZGdl
QUEoKTsgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvclRpbGVRdWFk
KiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgIFdlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25zdCBX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcXVh
ZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwg
Ym9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJv
b2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKyNlbmRpZgorCisgICAgUGxhdGZv
cm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBXZWJQb2ludCBtX3RleHR1cmVPZmZzZXQ7Cisg
ICAgV2ViU2l6ZSBtX3RleHR1cmVTaXplOworICAgIEdDM0RpbnQgbV90ZXh0dXJlRmlsdGVyOwor
ICAgIGJvb2wgbV9zd2l6emxlQ29udGVudHM7CisgICAgYm9vbCBtX2xlZnRFZGdlQUE7CisgICAg
Ym9vbCBtX3RvcEVkZ2VBQTsKKyAgICBib29sIG1fcmlnaHRFZGdlQUE7CisgICAgYm9vbCBtX2Jv
dHRvbUVkZ2VBQTsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggZTI0ODNlNTg1ZjMxNTQ0ZjU0ZjMxMDhiMzNkYTdjMjQ0MjkyNjNlZS4u
MzVlOGY4NjllZTIzYTk4NDgzYTRkZjlmNDc4MDE1MDkyM2YyODBhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtODE5MSw2ICs4MTkxLDE1IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkF1ZGlvQnVzLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hlY2tlcmJv
YXJkUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVh
ZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvclRpbGVRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJIVFRQQm9keS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViSFRUUExvYWRJbmZvLmNwcCcsCkBAIC04MjgzLDE3ICs4MjkyLDE0IEBACiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3Vy
dmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmlt
YXRpb25FdmVudHMuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2Vy
LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdC
b3JkZXJEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGlt
ZVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGb250QXRsYXMuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxhcy5oJywKQEAgLTgzMDQsNyArODMx
MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0
dXJlQ3VydmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXll
ckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lPU3VyZmFjZUxheWVySW1wbC5oJywKQEAgLTgzNjgsMTkgKzgzNzMsMTUgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdz
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0
aW5ncy5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1No
YXJlZFF1YWRTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgnLAotICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdR
dWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
b2xpZENvbG9yRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVh
ZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3Ry
ZWFtVmlkZW9EcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmUuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXll
ckltcGwuaCcsCkBAIC04MzkwLDcgKzgzOTEsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFzay5oJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFk
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JDaGVj
a2VyYm9hcmRRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzBkYjJiODQyNWJiZGYzMDk0MThkOWIwOTcy
OGY5NmVlOGJiOWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5jcHAKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWQ+IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkOjpjcmVhdGUoY29u
c3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0
b3JDaGVja2VyYm9hcmRRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QpKTsKK30KKworV2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ6OldlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFk
KGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29u
c3QgSW50UmVjdCYgcXVhZFJlY3QpCisgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFk
U3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQsIHF1YWRSZWN0KQoreworfQor
Citjb25zdCBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCogV2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkK
K3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6Q2hl
Y2tlcmJvYXJkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWQqPihxdWFkKTsKK30KKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21w
b3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzdkMzRlMmI0Yjk0OGMyNGRk
N2JlYTJjNjA0NjY1MzI2ZTEwM2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNw
cApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8cHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBv
c2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ6OmNyZWF0
ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yLCB3aWR0aCkpOworfQorCitXZWJDb21wb3NpdG9yRGVi
dWdCb3JkZXJRdWFkOjpXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKGNvbnN0IFdlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OkRlYnVnQm9yZGVyLCBxdWFkUmVj
dCkKKyAgICAsIG1fY29sb3IoY29sb3IpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIG1f
cXVhZE9wYXF1ZSA9IGZhbHNlOworICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkK
KyAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKK30KKworY29uc3QgV2ViQ29tcG9zaXRv
ckRlYnVnQm9yZGVyUXVhZCogV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZDo6bWF0ZXJpYWxD
YXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5t
YXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0JvcmRlcik7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQqPihxdWFkKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42M2EyOTMxNGRhZGRmOThkMWM4ODk1MTAzMWZiZTFhZTkxODBjODI1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ+IFdlYkNvbXBvc2l0b3JJ
T1N1cmZhY2VRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50U2l6ZSYg
aW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgaW9TdXJmYWNlU2l6ZSwgaW9TdXJmYWNlVGV4dHVyZUlkKSk7Cit9CisKK1dl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkOjpXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBp
b1N1cmZhY2VUZXh0dXJlSWQpCisgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3Rh
dGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50LCBxdWFkUmVjdCkKKyAgICAs
IG1faW9TdXJmYWNlU2l6ZShpb1N1cmZhY2VTaXplKQorICAgICwgbV9pb1N1cmZhY2VUZXh0dXJl
SWQoaW9TdXJmYWNlVGV4dHVyZUlkKQoreworfQorCitjb25zdCBXZWJDb21wb3NpdG9ySU9TdXJm
YWNlUXVhZCogV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBX
ZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9
PSBXZWJDb21wb3NpdG9yUXVhZDo6SU9TdXJmYWNlQ29udGVudCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKj4ocXVhZCk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZjMzRhMWE2MTA0MTE4MWVk
MDEzNWU3MjE0YWIxOGQzYmMzZGZhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclF1YWQuY3BwCkBAIC0wLDAg
KzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JRdWFkLmg+CisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9z
aXRvcklPU3VyZmFjZVF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlk
Q29sb3JRdWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1
YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbXBvc2l0b3JRdWFkOjpXZWJD
b21wb3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAg
ICA6IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKKyAgICAsIG1fbWF0ZXJpYWwo
bWF0ZXJpYWwpCisgICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQorICAgICwgbV9xdWFkVmlzaWJs
ZVJlY3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKKyAgICAsIG1fbmVlZHNC
bGVuZGluZyhmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOworICAgIEFT
U0VSVChtX21hdGVyaWFsICE9IEludmFsaWQpOworfQorCitJbnRSZWN0IFdlYkNvbXBvc2l0b3JR
dWFkOjpvcGFxdWVSZWN0KCkgY29uc3QKK3sKKyAgICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgaWYgKG1fc2hhcmVkUXVhZFN0YXRlLT5vcGFxdWUg
JiYgbV9xdWFkT3BhcXVlKQorICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICByZXR1cm4g
bV9vcGFxdWVSZWN0OworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJs
ZVJlY3QoY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQoreworICAgIEludFJlY3QgaW50
ZXJzZWN0aW9uID0gcXVhZFZpc2libGVSZWN0OworICAgIGludGVyc2VjdGlvbi5pbnRlcnNlY3Qo
bV9xdWFkUmVjdCk7CisgICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBpbnRlcnNlY3Rpb247Cit9CisK
K3Vuc2lnbmVkIFdlYkNvbXBvc2l0b3JRdWFkOjpzaXplKCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KG1hdGVyaWFsKCkpIHsKKyAgICBjYXNlIENoZWNrZXJib2FyZDoKKyAgICAgICAgcmV0dXJuIHNp
emVvZihXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCk7CisgICAgY2FzZSBEZWJ1Z0JvcmRl
cjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKTsK
KyAgICBjYXNlIElPU3VyZmFjZUNvbnRlbnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29t
cG9zaXRvcklPU3VyZmFjZVF1YWQpOworICAgIGNhc2UgVGV4dHVyZUNvbnRlbnQ6CisgICAgICAg
IHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKTsKKyAgICBjYXNlIFNvbGlk
Q29sb3I6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFk
KTsKKyAgICBjYXNlIFRpbGVkQ29udGVudDoKKyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21w
b3NpdG9yVGlsZVF1YWQpOworICAgIGNhc2UgU3RyZWFtVmlkZW9Db250ZW50OgorICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQpOworICAgIGNhc2UgSW52
YWxpZDoKKyAgICBjYXNlIFJlbmRlclBhc3M6CisgICAgY2FzZSBZVVZWaWRlb0NvbnRlbnQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIENSQVNIKCk7CisgICAgcmV0dXJuIHNpemVvZihX
ZWJDb21wb3NpdG9yUXVhZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNDAwMWFhM2E3NDdjYjRkNTg5YzNjYmZi
OTU0MTQ4Y2YwZTZiNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3BwCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oPgorCisjaW5jbHVkZSAiRmxvYXRRdWFk
LmgiCisjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgorCit1c2luZyBXZWJDb3JlOjpGbG9hdFF1
YWQ7Cit1c2luZyBXZWJDb3JlOjpJbnRSZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZTo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSgp
CisgICAgOiBvcGFjaXR5KDApCisgICAgLCBvcGFxdWUob3BhcXVlKQoreworfQorCitQYXNzT3du
UHRyPFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU+IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGU6OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9y
bSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFj
aXR5LCBib29sIG9wYXF1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUocXVhZFRyYW5zZm9ybSwgbGF5ZXJUcmFuc2Zvcm0sIGxheWVyUmVj
dCwgc2Npc3NvclJlY3QsIG9wYWNpdHksIG9wYXF1ZSkpOworfQorCitXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlOjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50
UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorICAgIDogcXVh
ZFRyYW5zZm9ybShxdWFkVHJhbnNmb3JtKQorICAgICwgbGF5ZXJUcmFuc2Zvcm0obGF5ZXJUcmFu
c2Zvcm0pCisgICAgLCBsYXllclJlY3QobGF5ZXJSZWN0KQorICAgICwgc2Npc3NvclJlY3Qoc2Np
c3NvclJlY3QpCisgICAgLCBvcGFjaXR5KG9wYWNpdHkpCisgICAgLCBvcGFxdWUob3BhcXVlKQor
eworfQorCitib29sIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OmlzTGF5ZXJBeGlzQWxp
Z25lZEludFJlY3QoKSBjb25zdAoreworICAgIC8vIE5vdGU6IHRoaXMgZG9lc24ndCBjb25zaWRl
ciB3aW5kb3cgb3IgcHJvamVjdGlvbiBtYXRyaWNlcy4KKyAgICAvLyBBc3N1bWUgdGhhdCB0aGV5
J3JlIG9ydGhvbm9ybWFsIGFuZCBoYXZlIGludGVnZXIgc2NhbGVzIGFuZCB0cmFuc2xhdGlvbnMu
CisgICAgYm9vbCBjbGlwcGVkID0gZmFsc2U7CisgICAgRmxvYXRRdWFkIHF1YWQgPSBXZWJDb3Jl
OjpDQ01hdGhVdGlsOjptYXBRdWFkKHF1YWRUcmFuc2Zvcm0sIEZsb2F0UXVhZChJbnRSZWN0KGxh
eWVyUmVjdCkpLCBjbGlwcGVkKTsKKyAgICByZXR1cm4gIWNsaXBwZWQgJiYgcXVhZC5pc1JlY3Rp
bGluZWFyKCkgJiYgcXVhZC5ib3VuZGluZ0JveCgpLmlzRXhwcmVzc2libGVBc0ludFJlY3QoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhiYmEyNTUxZDY2MTJlYmFmZmFjMWY5MGVhZTQ4MjYxM2E0NjBjZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU29saWRD
b2xvclF1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZD4gV2ViQ29tcG9z
aXRvclNvbGlkQ29sb3JRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBT
a0NvbG9yIGNvbG9yKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclNv
bGlkQ29sb3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yKSk7Cit9CisKK1dl
YkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKGNv
bnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvcikKKyAgICA6IFdlYkNvbXBv
c2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlNvbGlkQ29sb3Is
IHF1YWRSZWN0KQorICAgICwgbV9jb2xvcihjb2xvcikKK3sKKyAgICBpZiAoU2tDb2xvckdldEEo
bV9jb2xvcikgPCAyNTUpCisgICAgICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOworICAgIGVsc2UK
KyAgICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7Cit9CisKK2NvbnN0IFdlYkNvbXBvc2l0
b3JTb2xpZENvbG9yUXVhZCogV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENh
c3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1h
dGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlNvbGlkQ29sb3IpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQqPihxdWFkKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWUyNTdhYWY3ZTM0MWRlYzQ4NDdlMDMxZmRlMDAwZDIzZjYxY2I1NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFt
VmlkZW9RdWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFzc093blB0cjxXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkPiBXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWdu
ZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIG1hdHJpeCkpOworfQorCitXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkOjpXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKGNvbnN0
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVhbVZpZGVvQ29udGVudCwgcXVhZFJlY3QpCisgICAg
LCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCisgICAgLCBtX21hdHJpeChtYXRyaXgpCit7Cit9CisK
K2NvbnN0IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQqIFdlYkNvbXBvc2l0b3JTdHJlYW1W
aWRlb1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sK
KyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFt
VmlkZW9Db250ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRv
clN0cmVhbVZpZGVvUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JUZXh0dXJlUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVmNDVmZGM0Y2IyYTU4ZjcyODdmNWZhYzVk
YzU2YmRkMjMwNDA3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
PiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0
IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
dGV4dHVyZUlkLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworfQorCitX
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29u
c3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBs
aWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCisgICAgOiBX
ZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0
dXJlQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCisgICAg
LCBtX3ByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpCisgICAgLCBtX3V2UmVj
dCh1dlJlY3QpCisgICAgLCBtX2ZsaXBwZWQoZmxpcHBlZCkKK3sKK30KKwordm9pZCBXZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQ6OnNldE5lZWRzQmxlbmRpbmcoKQoreworICAgIG1fbmVlZHNCbGVu
ZGluZyA9IHRydWU7Cit9CisKK2NvbnN0IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCogV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3Np
dG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21w
b3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGls
ZVF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9yVGlsZVF1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MDYzZGUyNTJmNjRjMWQxYzY2Zjcy
YmNhMGYwNDAwOWEzNGI5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yVGlsZVF1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2Vi
Q29tcG9zaXRvclRpbGVRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50
UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBv
aW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0
ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29s
IHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yVGlsZVF1YWQoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgb3BhcXVlUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJl
U2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdl
QUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKK30KKworV2ViQ29tcG9zaXRvclRpbGVR
dWFkOjpXZWJDb21wb3NpdG9yVGlsZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50
UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBv
aW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0
ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29s
IHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCisgICAgOiBX
ZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUaWxl
ZENvbnRlbnQsIHF1YWRSZWN0KQorICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwg
bV90ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZzZXQpCisgICAgLCBtX3RleHR1cmVTaXplKHRleHR1
cmVTaXplKQorICAgICwgbV90ZXh0dXJlRmlsdGVyKHRleHR1cmVGaWx0ZXIpCisgICAgLCBtX3N3
aXp6bGVDb250ZW50cyhzd2l6emxlQ29udGVudHMpCisgICAgLCBtX2xlZnRFZGdlQUEobGVmdEVk
Z2VBQSkKKyAgICAsIG1fdG9wRWRnZUFBKHRvcEVkZ2VBQSkKKyAgICAsIG1fcmlnaHRFZGdlQUEo
cmlnaHRFZGdlQUEpCisgICAgLCBtX2JvdHRvbUVkZ2VBQShib3R0b21FZGdlQUEpCit7CisgICAg
aWYgKGlzQW50aWFsaWFzZWQoKSkKKyAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKKyAg
ICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OworfQorCitjb25zdCBXZWJDb21wb3NpdG9yVGls
ZVF1YWQqIFdlYkNvbXBvc2l0b3JUaWxlUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBv
c2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNv
bXBvc2l0b3JRdWFkOjpUaWxlZENvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNTljZWQ4NjliYmM3MjA4ZDAzZDVlY2NlYjBlMTJh
NzM2M2E4OTJjOS4uY2YwOWYwOWFhZjFjNmQ0ZmE2ZTAyOTczZmI4YWQ0NTdiMGQ1YjFhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00OCwyMyArNDgsMTQgQEAK
ICNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJE
cmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyUXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRl
ICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VG
aWx0ZXJzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgot
I2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDVGV4
dHVyZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFk
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlZpZGVvRnJhbWUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAg
LTQxNiw3ICs0MDcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBh
c3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zdAogICAgICAgICBkcmF3UXVh
ZChpdC0+Z2V0KCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQo
Y29uc3QgQ0NEcmF3UXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQogewogICAgIEludFJl
Y3Qgc2Npc3NvclJlY3QgPSBxdWFkLT5zY2lzc29yUmVjdCgpOwogCkBAIC00MzIsMzUgKzQyMywz
NSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVh
ZCogcXVhZCkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORCkpOwogCiAgICAgc3dpdGNoIChxdWFkLT5tYXRlcmlhbCgpKSB7
Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpJbnZhbGlkOgorICAgIGNhc2UgV2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZDo6SW52YWxpZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkOgotICAgICAgICBk
cmF3Q2hlY2tlcmJvYXJkUXVhZChxdWFkLT50b0NoZWNrZXJib2FyZERyYXdRdWFkKCkpOworICAg
IGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6Q2hlY2tlcmJvYXJkOgorICAgICAgICBk
cmF3Q2hlY2tlcmJvYXJkUXVhZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjptYXRlcmlhbENhc3Qo
cXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkRlYnVnQm9yZGVy
OgotICAgICAgICBkcmF3RGVidWdCb3JkZXJRdWFkKHF1YWQtPnRvRGVidWdCb3JkZXJEcmF3UXVh
ZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OkRlYnVnQm9yZGVyOgor
ICAgICAgICBkcmF3RGVidWdCb3JkZXJRdWFkKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6bWF0ZXJp
YWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpJT1N1
cmZhY2VDb250ZW50OgotICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChxdWFkLT50b0lPU3VyZmFj
ZURyYXdRdWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6SU9TdXJm
YWNlQ29udGVudDoKKyAgICAgICAgZHJhd0lPU3VyZmFjZVF1YWQoQ0NJT1N1cmZhY2VEcmF3UXVh
ZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdR
dWFkOjpSZW5kZXJQYXNzOgotICAgICAgICBkcmF3UmVuZGVyUGFzc1F1YWQocXVhZC0+dG9SZW5k
ZXJQYXNzRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpS
ZW5kZXJQYXNzOgorICAgICAgICBkcmF3UmVuZGVyUGFzc1F1YWQoQ0NSZW5kZXJQYXNzRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3
UXVhZDo6U29saWRDb2xvcjoKLSAgICAgICAgZHJhd1NvbGlkQ29sb3JRdWFkKHF1YWQtPnRvU29s
aWRDb2xvckRyYXdRdWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
U29saWRDb2xvcjoKKyAgICAgICAgZHJhd1NvbGlkQ29sb3JRdWFkKFdlYktpdDo6V2ViQ29tcG9z
aXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENDRHJhd1F1YWQ6OlN0cmVhbVZpZGVvQ29udGVudDoKLSAgICAgICAgZHJhd1N0
cmVhbVZpZGVvUXVhZChxdWFkLT50b1N0cmVhbVZpZGVvRHJhd1F1YWQoKSk7CisgICAgY2FzZSBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQ6CisgICAgICAgIGRy
YXdTdHJlYW1WaWRlb1F1YWQoQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjptYXRlcmlhbENhc3QocXVh
ZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OlRleHR1cmVDb250ZW50
OgotICAgICAgICBkcmF3VGV4dHVyZVF1YWQocXVhZC0+dG9UZXh0dXJlRHJhd1F1YWQoKSk7Cisg
ICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudDoKKyAgICAg
ICAgZHJhd1RleHR1cmVRdWFkKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjptYXRl
cmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudDoKLSAgICAgICAgZHJhd1RpbGVRdWFkKHF1YWQtPnRvVGlsZURyYXdRdWFkKCkp
OworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6VGlsZWRDb250ZW50OgorICAg
ICAgICBkcmF3VGlsZVF1YWQoQ0NUaWxlRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6WVVWVmlkZW9Db250ZW50OgotICAg
ICAgICBkcmF3WVVWVmlkZW9RdWFkKHF1YWQtPnRvWVVWVmlkZW9EcmF3UXVhZCgpKTsKKyAgICBj
YXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OllVVlZpZGVvQ29udGVudDoKKyAgICAgICAg
ZHJhd1lVVlZpZGVvUXVhZChDQ1lVVlZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aAppbmRleCBmNDY0ZWFlMWI1ODA0NjdlNGFlOTIyNTU3ODlkNzMyNmFiNzhlMTlkLi5hNDlhZjZk
NTNiMTlkZmU3YWU0YjIzMTBkNjEwNGI3YTA1NDY3MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsMTYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNpbmNsdWRlICJUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFk
LmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgorI2luY2x1ZGUgImNjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCisjaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVh
ZC5oIgorI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDYsMTYgKzU1LDYgQEAgY2xh
c3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKLWNs
YXNzIENDRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQ7Ci1jbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKLWNsYXNzIENDU3Ry
ZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIENDVGV4dHVyZURyYXdRdWFkOwotY2xhc3MgQ0NUaWxl
RHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQ7CiBjbGFzcyBHZW9tZXRyeUJpbmRp
bmc7CiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFNjb3BlZEVuc3VyZUZyYW1lYnVmZmVy
QWxsb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZTAzMzUxNGE2ODQ2YWI5ZjRjYjFmY2Ix
Yjk2MTU4ZmYyZDAyM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3
UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NDaGVja2VyYm9h
cmREcmF3UXVhZD4gQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDaGVja2VyYm9hcmREcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0KSk7Ci19Ci0KLUNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCi0gICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkKLXsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCmluZGV4IDI3ZjhjNTZiZDQ5YzQ1ZTMw
NTVhM2ZhN2NiNmU3YTcyNWU1ZjQzZjEuLjM1MTA0ZGNmNWIzYzdlOWYyZjg1NWI1ZjIyMDVhNjFj
MWI2YjljN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgKQEAg
LTI2LDIwICsyNiwxMCBAQAogI2lmbmRlZiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gKICNkZWZp
bmUgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9z
aXRvckNoZWNrZXJib2FyZFF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
Q0NoZWNrZXJib2FyZERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKLQotcHJpdmF0ZToKLSAgICBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYpOwot
fTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkIENDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdC
b3JkZXJEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MjdjNDdj
NTU3NmY5NmFjN2YzOTk5Y2MwN2ExZDUwZDEzZmI2N2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3du
UHRyPENDRGVidWdCb3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDRGVidWdCb3JkZXJEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBj
b2xvciwgd2lkdGgpKTsKLX0KLQotQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVnQm9yZGVy
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLSAgICA6IENDRHJh
d1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRlciwgcXVhZFJlY3Qp
Ci0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV93aWR0aCh3aWR0aCkKLXsKLSAgICBtX3F1
YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAyNTUpCi0g
ICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmgKaW5kZXggZWExY2Y4NDc2MDQxZDFiMTcyZTZjMDI2YzdmNzg2
MjgxYWNlNDRmNC4uYTcyYzI3NDE3NmEwNmEzNjQyZjIxNjgwY2E1NDcyNTBhMjJhMWE2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjcgKzI2LDEwIEBACiAjaWZu
ZGVmIENDRGVidWdCb3JkZXJEcmF3UXVhZF9oCiAjZGVmaW5lIENDRGVidWdCb3JkZXJEcmF3UXVh
ZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3JEZWJ1Z0JvcmRlclF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwotCi0gICAgU2tDb2xv
ciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0gICAgaW50IHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aDsgfQotCi1wcml2YXRlOgotICAgIENDRGVidWdCb3JkZXJEcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBp
bnQgd2lkdGgpOwotCi0gICAgU2tDb2xvciBtX2NvbG9yOwotICAgIGludCBtX3dpZHRoOwotfTsK
LQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY1NjIxZGI1MzZkZGE1Zjk1ZjI1YjAzYjcyYzFmMmI5
ZjYxODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLQotI2luY2x1ZGUgImNjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIK
LSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgot
I2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDVGV4
dHVyZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLSNpbmNsdWRl
ICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DQ0Ry
YXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKLSAgICA6IG1f
c2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKLSAgICAsIG1fbWF0ZXJpYWwobWF0ZXJp
YWwpCi0gICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQotICAgICwgbV9xdWFkVmlzaWJsZVJlY3Qo
cXVhZFJlY3QpCi0gICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKLSAgICAsIG1fbmVlZHNCbGVuZGlu
ZyhmYWxzZSkKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOwotICAgIEFTU0VSVCht
X21hdGVyaWFsICE9IEludmFsaWQpOwotfQotCi1JbnRSZWN0IENDRHJhd1F1YWQ6Om9wYXF1ZVJl
Y3QoKSBjb25zdAotewotICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIElu
dFJlY3QoKTsKLSAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYgbV9xdWFk
T3BhcXVlKQotICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKLSAgICByZXR1cm4gbV9vcGFxdWVS
ZWN0OwotfQotCi12b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJbnRS
ZWN0JiBxdWFkVmlzaWJsZVJlY3QpCi17Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBxdWFkVmlz
aWJsZVJlY3Q7Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fcXVhZFJlY3QpOwot
fQotCi1jb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0NoZWNrZXJi
b2FyZERyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBDaGVja2Vy
Ym9hcmQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdR
dWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogQ0NEcmF3UXVh
ZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlh
bCA9PSBEZWJ1Z0JvcmRlcik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDRGVidWdC
b3JkZXJEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBD
Q0RyYXdRdWFkOjp0b0lPU3VyZmFjZURyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9t
YXRlcmlhbCA9PSBJT1N1cmZhY2VDb250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1JlbmRlclBhc3NE
cmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdAotewotICAg
IEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclBhc3MpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1NvbGlk
Q29sb3JEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdAot
ewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFNvbGlkQ29sb3IpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBD
Q1N0cmVhbVZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU3RyZWFtVmlkZW9EcmF3UXVhZCgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gU3RyZWFtVmlkZW9Db250ZW50KTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKj4odGhp
cyk7Ci19Ci0KLWNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1RleHR1cmVE
cmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVGV4dHVyZUNvbnRl
bnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCo+KHRo
aXMpOwotfQotY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURyYXdRdWFk
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBUaWxlZENvbnRlbnQpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RpbGVEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1j
b25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvWVVWVmlkZW9EcmF3UXVhZCgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gWVVWVmlkZW9Db250ZW50KTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKj4odGhpcyk7Ci19
Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDc1NmI2ODAzNmRkNjYzNzdlNDUxZDJlMTcy
MGE4YWE3NGE4ZjEwZTAuLjYxNGQyMGUwNDE3OGUxYzJlNzI0NDViNTcwNmQ2OWU1MGM3MGI0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTI2LDkxICsyNiwxMCBAQAogI2lmbmRlZiBDQ0RyYXdR
dWFkX2gKICNkZWZpbmUgQ0NEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRT
dGF0ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7Ci1jbGFzcyBDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ7Ci1jbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKLWNsYXNzIEND
U3RyZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIENDVGV4dHVyZURyYXdRdWFkOwotY2xhc3MgQ0NU
aWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQ7Ci0KLS8vIENDRHJhd1F1YWQg
aXMgYSBiYWcgb2YgZGF0YSB1c2VkIGZvciBkcmF3aW5nIGEgcXVhZC4gQmVjYXVzZSBkaWZmZXJl
bnQKLS8vIG1hdGVyaWFscyBuZWVkIGRpZmZlcmVudCBiaXRzIG9mIHBlci1xdWFkIGRhdGEgdG8g
cmVuZGVyLCBjbGFzc2VzIHRoYXQgZGVyaXZlCi0vLyBmcm9tIENDRHJhd1F1YWQgc3RvcmUgYWRk
aXRpb25hbCBkYXRhIGluIHRoZWlyIGRlcml2ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlhbAotLy8g
ZW51bSBpcyB1c2VkIHRvICJzYWZlbHkiIHVwY2FzdCB0byB0aGUgZGVyaXZlZCBjbGFzcy4KLWNs
YXNzIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDRHJhd1F1YWQpOwot
cHVibGljOgotICAgIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9x
dWFkUmVjdDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1
YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5z
Zm9ybSgpOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJUcmFu
c2Zvcm0oKTsgfQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQotICAgIGNvbnN0IEludFJlY3QmIHNj
aXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPnNjaXNzb3JSZWN0
KCk7IH0KLSAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3Rh
dGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgYmxlbmRpbmcsIHdo
YXQgcGFydCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIGFyZSBvcGFxdWU/Ci0gICAgSW50
UmVjdCBvcGFxdWVSZWN0KCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMobV9xdWFk
VmlzaWJsZVJlY3QpOyB9Ci0gICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3Qo
KTsgfQotCi0gICAgLy8gQWxsb3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBkcmF3biB0
byBtYWtlIGl0IHNtYWxsZXIuIFBhcmFtZXRlciBwYXNzZWQKLSAgICAvLyBpbiB3aWxsIGJlIGNs
aXBwZWQgdG8gcXVhZFJlY3QoKS4KLSAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KLQotICAgIGVudW0gTWF0ZXJpYWwgewotICAgICAg
ICBJbnZhbGlkLAotICAgICAgICBDaGVja2VyYm9hcmQsCi0gICAgICAgIERlYnVnQm9yZGVyLAot
ICAgICAgICBJT1N1cmZhY2VDb250ZW50LAotICAgICAgICBSZW5kZXJQYXNzLAotICAgICAgICBU
ZXh0dXJlQ29udGVudCwKLSAgICAgICAgU29saWRDb2xvciwKLSAgICAgICAgVGlsZWRDb250ZW50
LAotICAgICAgICBZVVZWaWRlb0NvbnRlbnQsCi0gICAgICAgIFN0cmVhbVZpZGVvQ29udGVudCwK
LSAgICB9OwotCi0gICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25zdCB7IHJldHVybiBtX21hdGVy
aWFsOyB9Ci0gICAgYm9vbCBpc0RlYnVnUXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWwg
PT0gRGVidWdCb3JkZXI7IH0KLQotICAgIGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHRv
Q2hlY2tlcmJvYXJkRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ0RlYnVnQm9yZGVyRHJh
d1F1YWQqIHRvRGVidWdCb3JkZXJEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDSU9TdXJm
YWNlRHJhd1F1YWQqIHRvSU9TdXJmYWNlRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ1Jl
bmRlclBhc3NEcmF3UXVhZCogdG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25z
dCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogdG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdDsKLSAg
ICBjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIHRvU3RyZWFtVmlkZW9EcmF3UXVhZCgpIGNv
bnN0OwotICAgIGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiB0b1RleHR1cmVEcmF3UXVhZCgpIGNv
bnN0OwotICAgIGNvbnN0IENDVGlsZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNvbnN0Owot
ICAgIGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogdG9ZVVZWaWRlb0RyYXdRdWFkKCkgY29uc3Q7
Ci0KLSAgICBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGU7IH0KLQotcHJvdGVjdGVkOgotICAgIENDRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBNYXRlcmlhbCwgY29uc3QgSW50UmVjdCYpOwot
Ci0gICAgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIG1fc2hhcmVkUXVhZFN0YXRlOwotCi0gICAg
TWF0ZXJpYWwgbV9tYXRlcmlhbDsKLSAgICBJbnRSZWN0IG1fcXVhZFJlY3Q7Ci0gICAgSW50UmVj
dCBtX3F1YWRWaXNpYmxlUmVjdDsKLQotICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBzaGFyZWQgcXVh
ZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcXVhZCBpcwotICAgIC8vIG9w
YXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB3aXRo
IHRoZXNlCi0gICAgLy8gdmFyaWFibGVzLgotICAgIGJvb2wgbV9xdWFkT3BhcXVlOwotICAgIGJv
b2wgbV9uZWVkc0JsZW5kaW5nOwotCi0gICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVt
cHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQotICAg
IC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVl
IGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4KLSAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsK
LX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCBDQ0RyYXdRdWFkOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZGI0ZWZjYmFhYzYwMDIzMmRlZTRjNGIyNmMwOTg5NmYz
MzVlZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3
UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gQ0NJT1N1
cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VT
aXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDQ0lPU3VyZmFjZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGlvU3Vy
ZmFjZVNpemUsIGlvU3VyZmFjZVRleHR1cmVJZCkpOwotfQotCi1DQ0lPU3VyZmFjZURyYXdRdWFk
OjpDQ0lPU3VyZmFjZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VT
aXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCi0gICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6SU9TdXJmYWNlQ29udGVudCwgcXVhZFJlY3QpCi0gICAg
LCBtX2lvU3VyZmFjZVNpemUoaW9TdXJmYWNlU2l6ZSkKLSAgICAsIG1faW9TdXJmYWNlVGV4dHVy
ZUlkKGlvU3VyZmFjZVRleHR1cmVJZCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VEcmF3UXVhZC5oCmluZGV4IDI3Zjg2M2VlNjEzMGMwOGM1MjUzMjNhMjIxNWQzNDFmOTllOGJh
MDEuLjc3ZDMyNmNiZDBkODg0YmNkMGIyZmMwODcxMjAwYmJiNmI3NzdjMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
RHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgKQEAgLTI2LDI2ICsyNiwxMCBAQAogI2lmbmRlZiBD
Q0lPU3VyZmFjZURyYXdRdWFkX2gKICNkZWZpbmUgQ0NJT1N1cmZhY2VEcmF3UXVhZF9oCiAKLSNp
bmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1
YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSU9TdXJmYWNlRHJhd1F1YWQpOwotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSU9TdXJmYWNlRHJhd1F1YWQ+IGNyZWF0ZShj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBp
b1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOwotCi0gICAgY29uc3Qg
SW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlU2l6ZTsg
fQotICAgIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1faW9T
dXJmYWNlVGV4dHVyZUlkOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NJT1N1cmZhY2VEcmF3UXVhZChj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBp
b1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOwotCi0gICAgSW50U2l6
ZSBtX2lvU3VyZmFjZVNpemU7Ci0gICAgdW5zaWduZWQgbV9pb1N1cmZhY2VUZXh0dXJlSWQ7Ci19
OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQgQ0NJT1N1cmZh
Y2VEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAwMGEzNTFi
MjJkYjg0NGY3Yzc5N2E4MjljNGQxNmFiZmE2NmRhODBhLi40MDUyN2ViYzZjYWQ3OWFiOWViZTZm
ZjI0ZWM1MGRlN2NkOGNlNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlLmgiCisj
aW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViRmls
dGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ4LDcgKzQ5LDYgQEAgY2xhc3MgQ0NM
YXllclNvcnRlcjsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ1F1YWRDdWxs
ZXI7CiBjbGFzcyBDQ1JlbmRlcmVyOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBM
YXllckNocm9taXVtOwogCiBjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDQ3YWUyZjc0
N2U4ZGQwN2E1NGViMGIyYzhlNDYyYWViMGE1NzhhZWUuLjYxMDAxNDViODc0MWE1ZDE5YjFhZDZh
ODE5ZTVkZDliZDE4NzlmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC0yNywxNiArMjcs
MTYgQEAKICNkZWZpbmUgQ0NSZW5kZXJQYXNzX2gKIAogI2luY2x1ZGUgIlNrQ29sb3IuaCIKKyNp
bmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2Vy
LmgiCisjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDQ0RyYXdRdWFkOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ1JlbmRl
clN1cmZhY2U7Ci1jbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIAogLy8gQSBsaXN0IG9mIENDRHJh
d1F1YWQgb2JqZWN0cywgc29ydGVkIGludGVybmFsbHkgaW4gZnJvbnQtdG8tYmFjayBvcmRlci4K
IGNsYXNzIENDUXVhZExpc3QgOiBwdWJsaWMgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFkPiA+IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCA3NWJkNzYxZDE1
NTM1ODY5MWMyYjA0Y2QxZTc2YmM3YTkzODM4MjllLi5lM2E4MWIzNzNkNzE3NmFiYmU0NjBhMzVj
ZWQ0NTQ5ZGIwODJmNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQu
Y3BwCkBAIC0yOSwxNCArMjksMTYgQEAKIAogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgog
Cit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFk
OjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBp
c1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWdu
ZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQ
YXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJh
Y2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHJlbmRlclBh
c3MsIGlzUmVwbGljYSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQs
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKLUNDUmVuZGVyUGFzc0RyYXdR
dWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91
bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKK0NDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBh
c3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFz
cyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNr
Z3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRT
dGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3JlbmRlclBh
c3MocmVuZGVyUGFzcykKICAgICAsIG1fcmVuZGVyUGFzc0lkKHJlbmRlclBhc3MtPmlkKCkpCkBA
IC00OSw0ICs1MSwxMCBAQCBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdAogICAgIEFTU0VSVChtX3Jl
bmRlclBhc3MpOwogfQogCitjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBx
dWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFk
OjpSZW5kZXJQYXNzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqPihxdWFkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmgKaW5kZXggYjYzYTc2NDQ2ODM5Njk4MjBhNWJkMzAxZDEwNjZhMjZjNGU0NzYyNS4uMjY4
YjY4ZTc2ZmY1NTg4NjgwODZlZTFjNjJjZDY3MDM4N2ZiYmMxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIENDUmVuZGVy
UGFzc0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCi0jaW5jbHVk
ZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIApAQCAtMzQsMTAgKzM0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0NSZW5kZXJQYXNzOwogCi1jbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1
YmxpYyBDQ0RyYXdRdWFkIHsKK2NsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVibGljIFdl
YktpdDo6V2ViQ29tcG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVu
ZGVyUGFzc0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRl
clBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBh
c3MqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0
ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3Mo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3M7IH0KICAgICBpbnQgcmVuZGVyUGFzc0lkKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KQEAgLTQ4LDggKzQ4LDkgQEAgcHVibGlj
OgogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsdGVyczsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0
ZXJzOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1hdGVyaWFs
Q2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIEND
UmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBDQ1JlbmRlclBhc3NE
cmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwg
Y29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgY29u
c3QgQ0NSZW5kZXJQYXNzKiBtX3JlbmRlclBhc3M7CiAgICAgaW50IG1fcmVuZGVyUGFzc0lkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA4OTRlYTVhZWEyZWZhZWU2YmNmMDE1YjM4
MGUwMzEyMjMzNGE5ZDcyLi4wNjhhNDEwNmJiZjIxY2RhNWU5YzQ2NmRjNDNkNzZiMDRmM2YwYTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgImNjL0ND
U2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQxLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xhc3MgQ0NS
ZW5kZXJQYXNzOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRleHRTdHJlYW07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJl
ZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVlMDY4MWZmNWZhZmQyM2M1ODZjY2E3MWY5ZTE0NzA1NjgyMTcxNWQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUg
ImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCi0KLSNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCi0K
LXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFkU3RhdGU6
OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBi
b29sIG9wYXF1ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2hhcmVkUXVhZFN0YXRl
KHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3JtLCBsYXllclJlY3QsIHNjaXNzb3JSZWN0LCBv
cGFjaXR5LCBvcGFxdWUpKTsKLX0KLQotQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0
YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wg
b3BhcXVlKQotICAgIDogbV9xdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCi0gICAgLCBtX2xh
eWVyVHJhbnNmb3JtKGxheWVyVHJhbnNmb3JtKQotICAgICwgbV9sYXllclJlY3QobGF5ZXJSZWN0
KQotICAgICwgbV9zY2lzc29yUmVjdChzY2lzc29yUmVjdCkKLSAgICAsIG1fb3BhY2l0eShvcGFj
aXR5KQotICAgICwgbV9vcGFxdWUob3BhcXVlKQotewotfQotCi1ib29sIENDU2hhcmVkUXVhZFN0
YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QKLXsKLSAgICAvLyBOb3RlOiB0
aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93IG9yIHByb2plY3Rpb24gbWF0cmljZXMuCi0gICAg
Ly8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRlZ2VyIHNjYWxl
cyBhbmQgdHJhbnNsYXRpb25zLgotICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOwotICAgIEZsb2F0
UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtKCksIEZsb2F0UXVh
ZChsYXllclJlY3QoKSksIGNsaXBwZWQpOwotICAgIHJldHVybiAhY2xpcHBlZCAmJiBxdWFkLmlz
UmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVj
dCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaAppbmRleCA0NTQwYTA2
Zjg0ZWU1MmRmYWM1ZGUzNTYwNDhlYmIxOGM1OGRiNzJjLi4wMjc3MTAzNzM0Y2E1N2Y3ODFhM2Nl
MzIxN2ZmZGVmZWY2MDRkNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKQEAg
LTI2LDQwICsyNiwxMCBAQAogI2lmbmRlZiBDQ1NoYXJlZFF1YWRTdGF0ZV9oCiAjZGVmaW5lIEND
U2hhcmVkUXVhZFN0YXRlX2gKIAotI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTaGFy
ZWRRdWFkU3RhdGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2hhcmVkUXVhZFN0YXRl
KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9h
dCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7Ci0KLSAgICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgcXVh
ZHMgaW4gYSBDQ0RyYXdRdWFkIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgotICAgIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBtX3F1YWRUcmFuc2Zvcm07IH0KLSAgICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgbGF5
ZXJSZWN0KCkgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIHdpdGguCi0gICAgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X2xheWVyVHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllclJlY3Q7IH0KLSAgICBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJlY3Q7IH0KLQotICAgIGZsb2F0IG9wYWNpdHkoKSBj
b25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0KLSAgICBib29sIGlzT3BhcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGFxdWU7IH0KLSAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICBDQ1NoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFx
dWUpOwotCi0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3F1YWRUcmFuc2Zv
cm07Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2xheWVyVHJhbnNmb3Jt
OwotICAgIEludFJlY3QgbV9sYXllclJlY3Q7Ci0gICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0Owot
ICAgIGZsb2F0IG1fb3BhY2l0eTsKLSAgICBib29sIG1fb3BhcXVlOwotfTsKLQordHlwZWRlZiBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgQ0NTaGFyZWRRdWFkU3RhdGU7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY4MzY5YjY5YjcwOTZlYWMzMjVhMGY4MTQ5ZmY4
MDAwZmViOWY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+
IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NvbGlkQ29sb3JEcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBjb2xvcikpOwotfQotCi1DQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Q0NT
b2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCi0gICAgOiBDQ0RyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCi0g
ICAgLCBtX2NvbG9yKGNvbG9yKQotewotICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1
NSkKLSAgICAgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBtX29w
YXF1ZVJlY3QgPSBxdWFkUmVjdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRy
YXdRdWFkLmgKaW5kZXggODNlYTM0MDY2MTU3MDEwZjBkMTI5MmU4ZTE1NjMzY2UyYTE3M2ViMS4u
YjZjMGVlMDI1ZWEzYWUyYmJjYWFkNzM4NWZjZWJiYzNjYTY5Zjk2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJh
d1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDI1ICsyNiwxMCBAQAogI2lmbmRlZiBDQ1NvbGlkQ29s
b3JEcmF3UXVhZF9oCiAjZGVmaW5lIENDU29saWRDb2xvckRyYXdRdWFkX2gKIAotI2luY2x1ZGUg
IlNrQ29sb3IuaCIKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQg
OiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTb2xpZENv
bG9yRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU29saWRDb2xv
ckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgU2tDb2xvcik7Ci0KLSAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xv
cjsgfTsKLQotcHJpdmF0ZToKLSAgICBDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yKTsKLQotICAgIFNrQ29sb3IgbV9j
b2xvcjsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQg
Q0NTb2xpZENvbG9yRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3Ry
ZWFtVmlkZW9EcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMWJh
Mjk5MjNmNmQwZTAzMTg2NWUzYTU0MmE4NGIxNDBlMDhhNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJj
Yy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNz
T3duUHRyPENDU3RyZWFtVmlkZW9EcmF3UXVhZD4gQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTdHJl
YW1WaWRlb0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgbWF0
cml4KSk7Ci19Ci0KLUNDU3RyZWFtVmlkZW9EcmF3UXVhZDo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBD
Q0RyYXdRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV90ZXh0dXJl
SWQodGV4dHVyZUlkKQotICAgICwgbV9tYXRyaXgobWF0cml4KQotewotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVh
bVZpZGVvRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCmluZGV4IDMwMzczNDhkMzU0ZjZlYjdlOTc4
YTU0ZTVjODdhNmQ2ZDQ2MjBiNmUuLmExODkwNjExYTQ0MWQyZGI4YTI0Njc2ZDM4Zjg1ZDM4NGVk
ZWRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCkBAIC0yNiwy
NyArMjYsMTAgQEAKICNpZm5kZWYgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NT
dHJlYW1WaWRlb0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNs
dWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
IDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU3RyZWFt
VmlkZW9EcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTdHJlYW1W
aWRlb0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRS
ZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7Ci0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVJZDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NTdHJl
YW1WaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYs
IHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpOwotCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX21hdHJpeDsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3Np
dG9yU3RyZWFtVmlkZW9RdWFkIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGJkYmNhOTVmYmU4ZTYxODFkNjM5MjYxOTEzZDE0ZGUxMmIyOWM5ZDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
UGFzc093blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29u
c3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDVGV4dHVyZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1
cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKLX0KLQotQ0NUZXh0
dXJlRHJhd1F1YWQ6OkNDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJl
SWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6
OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkK
LSAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAsIG1f
dXZSZWN0KHV2UmVjdCkKLSAgICAsIG1fZmxpcHBlZChmbGlwcGVkKQotewotfQotCi12b2lkIEND
VGV4dHVyZURyYXdRdWFkOjpzZXROZWVkc0JsZW5kaW5nKCkKLXsKLSAgICBtX25lZWRzQmxlbmRp
bmcgPSB0cnVlOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaAppbmRleCBh
NGJhZWZhMTMzYWY0YTAyMTNlOGU1ZjdmOTFkYzkyYWEwZDQzYTg2Li4yOGMzZDkxMzJmYjU4ZDhk
YTEyMGNjZjljMTU5YzE3MzQ1MTBkODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFk
LmgKQEAgLTI2LDMyICsyNiwxMCBAQAogI2lmbmRlZiBDQ1RleHR1cmVEcmF3UXVhZF9oCiAjZGVm
aW5lIENDVGV4dHVyZURyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1RleHR1cmVE
cmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
Q1RleHR1cmVEcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUZXh0
dXJlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBG
bG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKLQotICAgIHVuc2lnbmVkIHRleHR1cmVJ
ZCgpIGNvbnN0IHsgcmV0dXJuICBtX3RleHR1cmVJZDsgfQotICAgIGJvb2wgcHJlbXVsdGlwbGll
ZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9Ci0gICAgRmxv
YXRSZWN0IHV2UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9Ci0gICAgYm9vbCBmbGlw
cGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVkOyB9Ci0KLSAgICB2b2lkIHNldE5lZWRzQmxl
bmRpbmcoKTsKLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVEcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7
Ci0gICAgCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX3ByZW11bHRpcGxp
ZWRBbHBoYTsKLSAgICBGbG9hdFJlY3QgbV91dlJlY3Q7Ci0gICAgYm9vbCBtX2ZsaXBwZWQ7Ci19
OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIENDVGV4dHVyZURy
YXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBkYzk0YzY5
NTZiMDM5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVh
ZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUm
IHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRz
LCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29s
IGJvdHRvbUVkZ2VBQSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1cmVJZCwgdGV4dHVy
ZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVm
dEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7Ci19Ci0KLUND
VGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0
dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmls
dGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VB
QSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCi0gICAgOiBDQ0RyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBxdWFkUmVjdCkKLSAg
ICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJl
T2Zmc2V0KQotICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKLSAgICAsIG1fdGV4dHVy
ZUZpbHRlcih0ZXh0dXJlRmlsdGVyKQotICAgICwgbV9zd2l6emxlQ29udGVudHMoc3dpenpsZUNv
bnRlbnRzKQotICAgICwgbV9sZWZ0RWRnZUFBKGxlZnRFZGdlQUEpCi0gICAgLCBtX3RvcEVkZ2VB
QSh0b3BFZGdlQUEpCi0gICAgLCBtX3JpZ2h0RWRnZUFBKHJpZ2h0RWRnZUFBKQotICAgICwgbV9i
b3R0b21FZGdlQUEoYm90dG9tRWRnZUFBKQotewotICAgIGlmIChpc0FudGlhbGlhc2VkKCkpCi0g
ICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci0gICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVl
UmVjdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKaW5kZXggMzM1MDFhODA2Y2Zh
ZmY5NjBmMjRjNmRkNmYxYzc4MjBhMTU3ODhjNS4uZDUzMGY0YTQ4ZjI5NDllYjNhY2IyOGE2M2My
Yjc2Y2FhN2E5NDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ0ICsyNiwxMCBAQAog
I2lmbmRlZiBDQ1RpbGVEcmF3UXVhZF9oCiAjZGVmaW5lIENDVGlsZURyYXdRdWFkX2gKIAotI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9y
VGlsZVF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1RpbGVEcmF3UXVh
ZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVE
cmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+
IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
Y29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXpl
LCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRF
ZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VB
QSk7Ci0KLSAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZUlkOyB9Ci0gICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZU9mZnNldDsgfQotICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3RleHR1cmVTaXplOyB9Ci0gICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9Ci0gICAgYm9vbCBzd2l6emxlQ29udGVudHMoKSBj
b25zdCB7IHJldHVybiBtX3N3aXp6bGVDb250ZW50czsgfQotCi0gICAgYm9vbCBsZWZ0RWRnZUFB
KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0RWRnZUFBOyB9Ci0gICAgYm9vbCB0b3BFZGdlQUEoKSBj
b25zdCB7IHJldHVybiBtX3RvcEVkZ2VBQTsgfQotICAgIGJvb2wgcmlnaHRFZGdlQUEoKSBjb25z
dCB7IHJldHVybiBtX3JpZ2h0RWRnZUFBOyB9Ci0gICAgYm9vbCBib3R0b21FZGdlQUEoKSBjb25z
dCB7IHJldHVybiBtX2JvdHRvbUVkZ2VBQTsgfQotCi0gICAgYm9vbCBpc0FudGlhbGlhc2VkKCkg
Y29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VBQSgpIHx8IHJpZ2h0RWRnZUFB
KCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1RpbGVEcmF3UXVhZChj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50
UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50
IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJv
b2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7Ci0KLSAg
ICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOwotICAgIEludFBvaW50IG1fdGV4dHVyZU9m
ZnNldDsKLSAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7Ci0gICAgR0MzRGludCBtX3RleHR1cmVG
aWx0ZXI7Ci0gICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsKLSAgICBib29sIG1fbGVmdEVkZ2VB
QTsKLSAgICBib29sIG1fdG9wRWRnZUFBOwotICAgIGJvb2wgbV9yaWdodEVkZ2VBQTsKLSAgICBi
b29sIG1fYm90dG9tRWRnZUFBOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JU
aWxlUXVhZCBDQ1RpbGVEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZW
aWRlb0RyYXdRdWFkLmNwcAppbmRleCBhMmQ2MmJhNDRjODY1NzY2ZjlhYTI5OTUwZTQ4YTUyYWQy
NjFlYjQ3Li40M2YyZTJmNmY1NzhlOGQ0OGU4NjYxOTkwYWFiNzdhMzc4NjEzNDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZp
ZGVvRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTI3LDE5ICsyNywyNyBAQAogCiAj
aW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmgiCiAKK3VzaW5nIFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1lVVlZp
ZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllcklt
cGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgdlBsYW5lKQorUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3
UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NWaWRlb0xh
eWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFu
ZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDWVVWVmlkZW9EcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCB5UGxhbmUsIHVQbGFuZSwgdlBsYW5lKSk7CiB9CiAKLUNDWVVW
VmlkZW9EcmF3UXVhZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZy
YW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBs
YW5lKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OllVVlZp
ZGVvQ29udGVudCwgcXVhZFJlY3QpCitDQ1lVVlZpZGVvRHJhd1F1YWQ6OkNDWVVWVmlkZW9EcmF3
UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYg
dVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpCisgICAg
OiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpZ
VVZWaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQogICAgICwgbV95UGxhbmUoeVBsYW5lKQogICAgICwg
bV91UGxhbmUodVBsYW5lKQogICAgICwgbV92UGxhbmUodlBsYW5lKQogewogfQogCitjb25zdCBD
Q1lVVlZpZGVvRHJhd1F1YWQqIENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1h
dGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OllVVlZpZGVvQ29udGVudCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCo+KHF1YWQpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCmluZGV4IDBjZDc1OGM1YjBmMDAzZDY0
NjVkYjkzMzZjYjk3ZWY1YjFmMjQzY2YuLjY2ODRhZDg5Nzg0MTUwN2FiMzFiZmMzM2EwNWRiMTg2
YmVkMDBkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCkBAIC0yNiwyMyAr
MjYsMjQgQEAKICNpZm5kZWYgQ0NZVVZWaWRlb0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NZVVZWaWRl
b0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitjbGFzcyBDQ1lV
VlZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NZVVZWaWRlb0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFu
ZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpG
cmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQ
bGFuZSk7CiAKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUo
KSBjb25zdCB7IHJldHVybiBtX3lQbGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmUmIHVQbGFuZSgpIGNvbnN0IHsgcmV0dXJuIG1fdVBsYW5lOyB9CiAgICAgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKCkgY29uc3QgeyByZXR1cm4g
bV92UGxhbmU7IH0KIAorICAgIHN0YXRpYyBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIG1hdGVy
aWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAg
IENDWVVWVmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IEND
VmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1w
bDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKKyAgICBDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVy
SW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBs
YW5lJiB2UGxhbmUpOwogCiAgICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSBtX3lQbGFu
ZTsKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lIG1fdVBsYW5lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCBi
MzU4MTk3NTlkNDE0MjQ5N2Q4Mjg1MjkwM2Q2MGU2NTUyMDBhNDUxLi42Y2M0ZDJjMzljYWNhMDI0
MTlkYTQzYTU4NTFkZDZiNjliN2RjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIHZvaWQg
dmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGNvbnN0IENDUXVhZExpc3QmIHF1YWRzLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBDQ0RyYXdRdWFkKiBxdWFkID0gcXVhZHNbaV0uZ2V0KCk7Cisg
ICAgICAgIEludFJlY3QgcXVhZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwogCi0gICAgICAgIEVY
UEVDVF9UUlVFKHJlY3QuY29udGFpbnMocXVhZC0+cXVhZFJlY3QoKSkpIDw8IHF1YWRTdHJpbmcg
PDwgaTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVtYWluaW5nLmNvbnRhaW5zKHF1YWQtPnF1YWRS
ZWN0KCkpKSA8PCBxdWFkU3RyaW5nIDw8IGk7Ci0gICAgICAgIHJlbWFpbmluZy5zdWJ0cmFjdChS
ZWdpb24ocXVhZC0+cXVhZFJlY3QoKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShyZWN0LmNvbnRh
aW5zKHF1YWRSZWN0KSkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBFWFBFQ1RfVFJVRShy
ZW1haW5pbmcuY29udGFpbnMocXVhZFJlY3QpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgICAg
IHJlbWFpbmluZy5zdWJ0cmFjdChSZWdpb24ocXVhZFJlY3QpKTsKICAgICB9CiAKICAgICBFWFBF
Q1RfVFJVRShyZW1haW5pbmcuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDIy
NzYzY2VmMzM5ZTViZmVlYTkyMGE1NDNhZGM0ZmY1YjExY2I2NGIuLjUzMmFjNmJkYzBjYTcyMmNk
MWM1NjkwNDM1M2VmMDA0YjU4ODA4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNr
Z3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNo
YXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFTU0VSVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKHF1YWRDdWxs
ZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKS0+Y29sb3IoKSwgdGVzdENv
bG9yKTsKKyAgICBFWFBFQ1RfRVEoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0uZ2V0KCkpLT5jb2xvcigpLCB0ZXN0Q29sb3IpOwogfQog
CiBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RPcGFjaXR5SW5R
dWFkKQpAQCAtMTAxLDcgKzEwMSw3IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwg
dmVyaWZ5Q29ycmVjdE9wYWNpdHlJblF1YWQpCiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFT
U0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7Ci0gICAgRVhQRUNUX0VR
KG9wYWNpdHksIHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENvbG9yRHJhd1F1YWQo
KS0+b3BhY2l0eSgpKTsKKyAgICBFWFBFQ1RfRVEob3BhY2l0eSwgQ0NTb2xpZENvbG9yRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChxdWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0uZ2V0KCkpLT5vcGFjaXR5
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151774</attachid>
            <date>2012-07-11 14:15:50 -0700</date>
            <delta_ts>2012-07-11 14:56:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90582-20120711141549.patch</filename>
            <type>text/plain</type>
            <size>139375</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyOGJjZDU2NjJkMmRj
ODlkMmZlMTJiODJhNDQ4OGYyODkzYzgyM2NjLi44ZjJhNjc2YjA4YWFhZGFjYmY5NmE1N2Y4YTk0
NDk1NDg3ZjZjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMi0wNy0wNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIGNvbXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NT
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQsIGFuZCBhbGwgYnV0IHR3byBDQypEcmF3UXVhZAor
ICAgICAgICBjbGFzc2VzIHRvIHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAg
dG8gcHVzaGluZyB0aGVtCisgICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3Ig
dGhlIHViZXJjb21wb3NpdG9yLgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxp
emUgdGhlIGNsYXNzIGhpZXJhcmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20g
YXMgV2ViSW5wdXRFdmVudC4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQor
ICAgICAgICByZXF1aXJlbWVudHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBz
aXplLCBhbmQgYSBwYWNraW5nCisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUg
ZGF0YSBtZW1iZXJzIGFyZSBmaW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBh
CisgICAgICAgIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2Yg
dGhhdCwgd2UgY2FuIG1haW50YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5k
IGNvbnZlbmllbnQgQVBJcyAoYmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikg
YXMgdGhlIG9yaWdpbmFsIGNsYXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9u
LCB0aGUgb3JpZ2luYWwgV2ViQ29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRv
CisgICAgICAgIHRoZSBuZXcgY2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1
YWRTdGF0ZSB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENf
U1RSVUNUX1RSQUlUUyBtYWNybywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3Vz
dG9tCisgICAgICAgIHNlcmlhbGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhl
IHBvaW50ZXJzIGZyb20gcXVhZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAg
ICAgICAtIEkgY29udmVydGVkIHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRl
cmlhbENhc3QoKSBtZXRob2RzCisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiAgVGhhdCB3YXksIHRoZSBXZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24n
dCBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAg
LSBRdWFkIGNsYXNzZXMgbm90IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4K
KyAgICAgICAgbm9uLXViZXJjb21wb3NpdG9yIG1vZGUuICBDQ1JlbmRlclBhc3NEcmF3UXVhZCBh
bmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgIGFyZSBjdXJyZW50bHkgbm9uLVBPRCBhbmQg
SSBsZWZ0IHRoZW0gaW4gdGhlaXIgb3JpZ2luYWwgZmlsZXMuCisKKyAgICAgICAgVGhpcyBhcHBy
b2FjaCBpcyB0aGUgYmVzdCBJJ3ZlIGZvdW5kIHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFs
bAorICAgICAgICBXZWJDb3JlLWZhY2luZyBBUElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29k
ZSBkdXBsaWNhdGlvbiAobmV3IHF1YWQKKyAgICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUg
YWRkZWQgYnkgbW9kaWZ5aW5nIG9ubHkgb25lIHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28g
c2hvdWxkIG5vdCBiZSBhbiB1bnJlYXNvbmFibGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVy
IGNvZGUKKyAgICAgICAgcmVxdWlyZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclF1YWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpsYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzTGF5ZXJBeGlzQWxp
Z25lZEludFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzRGVidWdR
dWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6Om1hdGVyaWFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRTaGFyZWRRdWFkU3RhdGUpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckRyYXdRdWFkLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6Y29sb3IpOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnV2
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6dGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpwcmVtdWx0
aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
OmZsaXBwZWQpOgorCiAyMDEyLTA3LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIGEgV2ViS2l0OjpXZWIqIHdyYXBwZXIg
Zm9yIHRoZSBjYyBhbmltYXRpb24gY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2YTA1MjYxZDIzZTlj
NjQzMThjZDExZTc4YzRhNTc1MzljNGUwNjkuLmIwMDc3MzhmMDYxNDYzNmFmMDRhNDAwNjA1NWQ2
NzdkYWM1N2U4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTItMDctMDQgIEFs
ZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TW92ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIENDU2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkLCBhbmQgYWxsIGJ1dCB0d28gQ0MqRHJhd1F1YWQKKyAg
ICAgICAgY2xhc3NlcyB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBzdGVwIHRv
IHB1c2hpbmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkgZm9yIHRo
ZSB1YmVyY29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2VyaWFsaXpl
IHRoZSBjbGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIGFz
IFdlYklucHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhyZWUKKyAg
ICAgICAgcmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5pbmcgc2l6
ZSwgYW5kIGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2YXRlIGRh
dGEgbWVtYmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBhbmQgYQor
ICAgICAgICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNlIG9mIHRo
YXQsIHdlIGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9uIGFuZCBj
b252ZW5pZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJT04pIGFz
IHRoZSBvcmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNpdGlvbiwg
dGhlIG9yaWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRlZiB0bwor
ICAgICAgICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFyZWRRdWFk
U3RhdGUgd2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAgSVBDX1NU
UlVDVF9UUkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBBIGN1c3Rv
bQorICAgICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWluIHRoZSBw
b2ludGVycyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisKKyAgICAg
ICAgLSBJIGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8gbWF0ZXJp
YWxDYXN0KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xhc3Nlcy4g
IFRoYXQgd2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRvZXNuJ3Qg
bmVlZCB0byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAgICAgIC0g
UXVhZCBjbGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2VkIGluCisg
ICAgICAgIG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5k
IENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICBhcmUgY3VycmVudGx5IG5vbi1QT0QgYW5kIEkg
bGVmdCB0aGVtIGluIHRoZWlyIG9yaWdpbmFsIGZpbGVzLgorCisgICAgICAgIFRoaXMgYXBwcm9h
Y2ggaXMgdGhlIGJlc3QgSSd2ZSBmb3VuZCBzbyBmYXIsIHNpbmNlIGl0IHByZXNlcnZlcyBhbGwK
KyAgICAgICAgV2ViQ29yZS1mYWNpbmcgQVBJcyBhbmQgYXZvaWRzIHVubmVjZXNzYXJ5IGNvZGUg
ZHVwbGljYXRpb24gKG5ldyBxdWFkCisgICAgICAgIHR5cGVzIG9yIG1lbWJlcnMgY2FuIGJlIGFk
ZGVkIGJ5IG1vZGlmeWluZyBvbmx5IG9uZSBwbGFjZSkuICBUaGVyZQorICAgICAgICBhbHNvIHNo
b3VsZCBub3QgYmUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiBjdXN0b20gc2VyaWFsaXplciBj
b2RlCisgICAgICAgIHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vLW9wIHJl
ZmFjdG9yaW5nLikKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6V2ViQ29tcG9z
aXRvclF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJsZVJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnNldE5l
ZWRzQmxlbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaDoKKyAgICAgICAgKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3JkZXJE
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVy
aWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdC
b3JkZXJEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpDQ1N0
cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAg
ICAgIChDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVh
ZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAo
Q0NZVVZWaWRlb0RyYXdRdWFkKToKKwogMjAxMi0wNy0xMSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4
LiBVcGRhdGUgY29kZSB0byB1c2UgdGhlIG5ldyBjb25zdGFudCBuYW1lLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA2Mjk5MTM5MmFiNjNkYjAyMGMwZjY4NDhjZDU3NjdhMWNhYTEyOWMw
Li4yYzdhMjk5NWZmYzhkNDZkNjgzZGQyNmM3M2RjMWE4NDIwN2RkNmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3LTA0ICBBbGV4YW5kcmUgRWxp
YXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1vdmUgY29tcG9z
aXRvciBxdWFkcyB0byBQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtb3ZlcyBDQ1NoYXJlZFF1YWRTdGF0
ZSwgQ0NEcmF3UXVhZCwgYW5kIGFsbCBidXQgdHdvIENDKkRyYXdRdWFkCisgICAgICAgIGNsYXNz
ZXMgdG8gdGhlIFdlYktpdCBuYW1lc3BhY2UsIGFzIGEgZmlyc3Qgc3RlcCB0byBwdXNoaW5nIHRo
ZW0KKyAgICAgICAgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdW5kYXJ5IGZvciB0aGUgdWJlcmNvbXBv
c2l0b3IuCisKKyAgICAgICAgLSBUaGUgaW50ZW50IGlzIHRvIHNlcmlhbGl6ZSB0aGUgY2xhc3Mg
aGllcmFyY2h5IHVzaW5nIHRoZSBzYW1lCisgICAgICAgIG1lY2hhbmlzbSBhcyBXZWJJbnB1dEV2
ZW50LiAgSW4gb3JkZXIgdG8gZG8gdGhpcywgdGhlcmUgYXJlIHRocmVlCisgICAgICAgIHJlcXVp
cmVtZW50czogcHVyZSBQT0QgZGF0YSwgYSBtZXRob2QgcmV0dXJuaW5nIHNpemUsIGFuZCBhIHBh
Y2tpbmcKKyAgICAgICAgcHJhZ21hLgorCisgICAgICAgIC0gUHJpdmF0ZSBkYXRhIG1lbWJlcnMg
YXJlIGZpbmUgd2l0aCB0aGlzIGtpbmQgb2Ygc2VyaWFsaXplciwgYW5kIGEKKyAgICAgICAgZGVm
YXVsdCBjb25zdHJ1Y3RvciBpcyBub3QgbmVlZGVkLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBjYW4g
bWFpbnRhaW4KKyAgICAgICAgdGhlIHNhbWUgZW5jYXBzdWxhdGlvbiBhbmQgY29udmVuaWVudCBB
UElzIChiZWhpbmQKKyAgICAgICAgV0VCS0lUX0lNUExFTUVOVEFUSU9OKSBhcyB0aGUgb3JpZ2lu
YWwgY2xhc3Nlcy4gIFRvIGVhc2UgdGhlCisgICAgICAgIHRyYW5zaXRpb24sIHRoZSBvcmlnaW5h
bCBXZWJDb3JlIGhlYWRlcnMgc3RpbGwgZXhpc3QgYW5kIHR5cGVkZWYgdG8KKyAgICAgICAgdGhl
IG5ldyBjbGFzc2VzLgorCisgICAgICAgIC0gSG93ZXZlciwgU2hhcmVkUXVhZFN0YXRlIHdpbGwg
YmUgc2VyaWFsaXplZCB1c2luZyB0aGUgbm9ybWFsCisgICAgICAgIElQQ19TVFJVQ1RfVFJBSVRT
IG1hY3JvLCBzbyBJIG1hZGUgaXRzIG1lbWJlcnMgcHVibGljLiAgQSBjdXN0b20KKyAgICAgICAg
c2VyaWFsaXplciAob24gcXVhZCBsaXN0cykgd2lsbCBtYWludGFpbiB0aGUgcG9pbnRlcnMgZnJv
bSBxdWFkcyB0bworICAgICAgICBTaGFyZWRRdWFkU3RhdGVzLgorCisgICAgICAgIC0gSSBjb252
ZXJ0ZWQgdGhlIE1hdGVyaWFsIGNhc3RpbmcgbWVjaGFuaXNtIHRvIG1hdGVyaWFsQ2FzdCgpIG1l
dGhvZHMKKyAgICAgICAgbGl2aW5nIGluIHRoZSBkZXJpdmVkIGNsYXNzZXMuICBUaGF0IHdheSwg
dGhlIFdlYkNvbXBvc2l0b3JRdWFkIGhlYWRlcgorICAgICAgICBkb2Vzbid0IG5lZWQgdG8ga25v
dyBhYm91dCBhbGwgaXRzIGRlcml2ZWQgY2xhc3Nlcy4KKworICAgICAgICAtIFF1YWQgY2xhc3Nl
cyBub3QgeWV0IHRyYW5zaXRpb25lZCBjYW4gc3RpbGwgYmUgdXNlZCBpbgorICAgICAgICBub24t
dWJlcmNvbXBvc2l0b3IgbW9kZS4gIENDUmVuZGVyUGFzc0RyYXdRdWFkIGFuZCBDQ1lVVlZpZGVv
RHJhd1F1YWQKKyAgICAgICAgYXJlIGN1cnJlbnRseSBub24tUE9EIGFuZCBJIGxlZnQgdGhlbSBp
biB0aGVpciBvcmlnaW5hbCBmaWxlcy4KKworICAgICAgICBUaGlzIGFwcHJvYWNoIGlzIHRoZSBi
ZXN0IEkndmUgZm91bmQgc28gZmFyLCBzaW5jZSBpdCBwcmVzZXJ2ZXMgYWxsCisgICAgICAgIFdl
YkNvcmUtZmFjaW5nIEFQSXMgYW5kIGF2b2lkcyB1bm5lY2Vzc2FyeSBjb2RlIGR1cGxpY2F0aW9u
IChuZXcgcXVhZAorICAgICAgICB0eXBlcyBvciBtZW1iZXJzIGNhbiBiZSBhZGRlZCBieSBtb2Rp
Znlpbmcgb25seSBvbmUgcGxhY2UpLiAgVGhlcmUKKyAgICAgICAgYWxzbyBzaG91bGQgbm90IGJl
IGFuIHVucmVhc29uYWJsZSBhbW91bnQgb2YgY3VzdG9tIHNlcmlhbGl6ZXIgY29kZQorICAgICAg
ICByZXF1aXJlZC4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjp2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QpOgor
ICAgICAgICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAo
Q0NMYXllclRlc3RDb21tb246OlRFU1QpOgorCiAyMDEyLTA3LTExICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWluaW11bSBzaXplIHVz
ZWQgZm9yIG9jY2x1c2lvbiB0cmFja2luZyBzaG91bGQgYmUgYSBzZXR0aW5nIG9uIENDTGF5ZXJU
cmVlSG9zdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCBhNmIzNWZkOTM4ZThhMDg5MjdhNmNlMWNm
OTc0NGQ3MWU0YzRhNjMyLi40NjVkYzMxMmNkMTc0ZDVjZDdmZTMwNzA4MWVmNDBjMTdiNjM0MGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtNDMsNiArNDMsMTUgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJDb2xvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJv
YXJkUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckRl
YnVnQm9yZGVyUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9z
aXRvcklPU3VyZmFjZVF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JRdWFkLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNvbnRlbnRMYXllckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViQ29va2llLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3
ZTAyYmJmZmE0MzI2MjdmOTRmMjVlYzVlZGEyOTJmODk5ZDFiMjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9h
cmRRdWFkLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZF9o
CisKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yQ2hl
Y2tlcmJvYXJkUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CitwdWJsaWM6CisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRv
ckNoZWNrZXJib2FyZFF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworI2VuZGlmCisKKyAgICBzdGF0aWMgY29u
c3QgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJD
b21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworI2VuZGlmCit9OworCisjcHJh
Z21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMzE4OWVlZDFmMTM2OTRkOTI5NTk2NjIzODRjMDRiNzBiY2Q3YjU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yRGVidWdCb3JkZXJRdWFkLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JEZWJ1Z0Jv
cmRlclF1YWRfaAorCisjaW5jbHVkZSAiU2tDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JRdWFkLmgiCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1
c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgOiBwdWJsaWMgV2Vi
Q29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IGNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgY29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2NvbG9yOyB9OworICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lkdGg7IH0KKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJR
dWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6Cisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVh
ZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgbV9jb2xv
cjsKKyAgICBpbnQgbV93aWR0aDsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ3ZWIxY2JkMDE0NDczMzQy
ODkxMDdiMjM2YWU5MWU0NGM1NGQyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZF9oCisjZGVm
aW5lIFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JRdWFkLmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xh
c3MgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQg
eworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOwor
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9p
b1N1cmZhY2VTaXplOyB9CisgICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pb1N1cmZhY2VUZXh0dXJlSWQ7IH0KKyNlbmRpZgorCisgICAgc3RhdGljIGNv
bnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29t
cG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBp
b1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOworI2VuZGlmCisKKyAg
ICBXZWJTaXplIG1faW9TdXJmYWNlU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZVRleHR1
cmVJZDsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDc4NjYzYTYyMzNkNDU5YzhlNjUxNjJkYmU5NzkwYjJhNTI2YjQ4MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1
YWQuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclF1YWRf
aAorI2RlZmluZSBXZWJDb21wb3NpdG9yUXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIK
KyNpbmNsdWRlICJXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisvLyBXQVJOSU5HISBBbGwgV2ViQ29tcG9zaXRvclhZWlF1YWQgY2xhc3NlcyBt
dXN0IHJlbWFpbiBQT0RzIChwbGFpbiBvbGQgZGF0YSkuCisvLyBUaGV5IGFyZSBpbnRlbmRlZCB0
byBiZSAic2VyaWFsaXphYmxlIiBieSBjb3B5aW5nIHRoZWlyIHJhdyBieXRlcywgc28gdGhleQor
Ly8gbXVzdCBub3QgY29udGFpbiBhbnkgbm9uLWJpdC1jb3B5YWJsZSBtZW1iZXIgdmFyaWFibGVz
IQorLy8KKy8vIEZ1cnRoZXJtb3JlLCB0aGUgY2xhc3MgbWVtYmVycyBuZWVkIHRvIGJlIHBhY2tl
ZCBzbyB0aGV5IGFyZSBhbGlnbmVkCisvLyBwcm9wZXJseSBhbmQgZG9uJ3QgaGF2ZSBwYWRkaW5n
cy9nYXBzLCBvdGhlcndpc2UgbWVtb3J5IGNoZWNrIHRvb2xzCisvLyBsaWtlIFZhbGdyaW5kIHdp
bGwgY29tcGxhaW4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugd2hlbgorLy8gdHJh
bnNmZXJyaW5nIHRoZXNlIGNsYXNzZXMgb3ZlciB0aGUgd2lyZS4KKyNwcmFnbWEgcGFjayhwdXNo
LCA0KQorCisvLyBXZWJDb21wb3NpdG9yUXVhZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRy
YXdpbmcgYSBxdWFkLiBCZWNhdXNlIGRpZmZlcmVudAorLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVy
ZW50IGJpdHMgb2YgcGVyLXF1YWQgZGF0YSB0byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUK
Ky8vIGZyb20gV2ViQ29tcG9zaXRvclF1YWQgc3RvcmUgYWRkaXRpb25hbCBkYXRhIGluIHRoZWly
IGRlcml2ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlhbAorLy8gZW51bSBpcyB1c2VkIHRvICJzYWZl
bHkiIGRvd25jYXN0IHRvIHRoZSBkZXJpdmVkIGNsYXNzLgorY2xhc3MgV2ViQ29tcG9zaXRvclF1
YWQgeworcHVibGljOgorICAgIGVudW0gTWF0ZXJpYWwgeworICAgICAgICBJbnZhbGlkLAorICAg
ICAgICBDaGVja2VyYm9hcmQsCisgICAgICAgIERlYnVnQm9yZGVyLAorICAgICAgICBJT1N1cmZh
Y2VDb250ZW50LAorICAgICAgICBSZW5kZXJQYXNzLAorICAgICAgICBUZXh0dXJlQ29udGVudCwK
KyAgICAgICAgU29saWRDb2xvciwKKyAgICAgICAgVGlsZWRDb250ZW50LAorICAgICAgICBZVVZW
aWRlb0NvbnRlbnQsCisgICAgICAgIFN0cmVhbVZpZGVvQ29udGVudCwKKyAgICB9OworCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcXVhZFJlY3Q7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5x
dWFkVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVy
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyVHJhbnNm
b3JtOyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBsYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJSZWN0OyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBzY2lz
c29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5zY2lzc29yUmVjdDsg
fQorICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
b3BhY2l0eTsgfQorICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgYmxlbmRpbmcsIHdoYXQgcGFy
dCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgV2ViQ29yZTo6
SW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3Q7CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMobV9x
dWFkVmlzaWJsZVJlY3QpOyB9CisgICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJl
Y3QoKTsgfQorCisgICAgLy8gQWxsb3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBkcmF3
biB0byBtYWtlIGl0IHNtYWxsZXIuIFBhcmFtZXRlciBwYXNzZWQKKyAgICAvLyBpbiB3aWxsIGJl
IGNsaXBwZWQgdG8gcXVhZFJlY3QoKS4KKyAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkVmlzaWJsZVJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRWaXNpYmxlUmVjdDsgfQorICAgIGJvb2wgaXNEZWJ1
Z1F1YWQoKSBjb25zdCB7IHJldHVybiBtX21hdGVyaWFsID09IERlYnVnQm9yZGVyOyB9CisjZW5k
aWYKKworICAgIE1hdGVyaWFsIG1hdGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsg
fQorCisgICAgLy8gUmV0dXJucyB0cmFuc2ZlciBzaXplIG9mIHRoaXMgb2JqZWN0IGJhc2VkIG9u
IHRoZSBkZXJpdmVkIGNsYXNzIChieQorICAgIC8vIGxvb2tpbmcgYXQgdGhlIG1hdGVyaWFsIHR5
cGUpLgorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKKworICAgIGNvbnN0IFdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cmVkUXVhZFN0YXRlOyB9CisgICAgdm9pZCBzZXRTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSB7IG1fc2hhcmVkUXVhZFN0
YXRlID0gc2hhcmVkUXVhZFN0YXRlOyB9CisKK3Byb3RlY3RlZDoKKyNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiwgTWF0ZXJpYWwsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyNlbmRpZgor
CisgICAgLy8gU3RvcmVzIHN0YXRlIGNvbW1vbiB0byBhIGxhcmdlIGJ1bmRsZSBvZiBxdWFkczsg
a2VwdCBzZXBhcmF0ZSBmb3IgbWVtb3J5CisgICAgLy8gZWZmaWNpZW5jeS4gVGhlcmUgaXMgc3Bl
Y2lhbCB0cmVhdG1lbnQgdG8gcmVjb25zdHJ1Y3QgdGhlc2UgcG9pbnRlcnMKKyAgICAvLyBkdXJp
bmcgc2VyaWFsaXphdGlvbi4KKyAgICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBtX3NoYXJlZFF1YWRTdGF0ZTsKKworICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7CisgICAgV2Vi
UmVjdCBtX3F1YWRSZWN0OworICAgIFdlYlJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisKKyAgICAv
LyBCeSBkZWZhdWx0LCB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9y
IG5vdCB0aGlzIHF1YWQgaXMKKyAgICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2
ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgd2l0aCB0aGVzZQorICAgIC8vIHZhcmlhYmxlcy4KKyAg
ICBib29sIG1fcXVhZE9wYXF1ZTsKKyAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKKworICAgIC8v
IEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFy
ZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQg
dGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUu
CisgICAgV2ViUmVjdCBtX29wYXF1ZVJlY3Q7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGNhMzc1
YjNmMmU0OTc4MDBiZDU3M2VlZmRmMGYzZDc3ZTFlM2UzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZV9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGVfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorI2luY2x1
ZGUgIldlYlJlY3QuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSB7
CitwdWJsaWM6CisgICAgLy8gVGhlIHRyYW5zZm9ybSB0aGF0IFdlYkNvbXBvc2l0b3JRdWFkcyBz
aG91bGQgYmUgdHJhbnNmb3JtZWQgd2l0aC4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBx
dWFkVHJhbnNmb3JtOworICAgIC8vIFRoZSB0cmFuc2Zvcm0gdGhhdCBsYXllclJlY3Qgc2hvdWxk
IGJlIHRyYW5zZm9ybWVkIHdpdGguCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJU
cmFuc2Zvcm07CisgICAgV2ViUmVjdCBsYXllclJlY3Q7CisgICAgV2ViUmVjdCBzY2lzc29yUmVj
dDsKKyAgICBmbG9hdCBvcGFjaXR5OworICAgIGJvb2wgb3BhcXVlOworCisgICAgV2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSgpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
c3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9w
YWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9w
YWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3Qo
KSBjb25zdDsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU5YjI0NjIxYzk2NDgxNDFhMzQwZTdhZWI2ZTZmNjA0NWMzNjdmZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZF9oCisKKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9z
aXRvclF1YWQuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2so
cHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkIDogcHVibGljIFdl
YkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ+IGNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFNrQ29sb3IpOworI2VuZGlmCisKKyAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xvcjsgfTsKKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yU29saWRDb2xv
clF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBTa0NvbG9yKTsKKyNlbmRpZgorCisgICAgU2tDb2xvciBtX2NvbG9yOworfTsKKwor
I3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFk
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzZhM2NlYWI0YjZjMzNmMTNkNTM5Y2JmZmRiYWY4MTExMWZhMzU4ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU3Ry
ZWFtVmlkZW9RdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JT
dHJlYW1WaWRlb1F1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgdGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KKworICAg
IHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKiBtYXRlcmlhbENhc3Qo
Y29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisgICAgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZChjb25zdCBXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRl
eHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyNlbmRpZgorCisgICAg
dW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRy
aXg7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWJlNmZkM2U2ZDMxODI2ZjI1MTJhODAyNjM3Mjc5ZjQzMjcyNjA2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkX2gKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2VuZGlmCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
clF1YWQuaCIKKyNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBs
aWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQp
OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVj
dDsgfQorI2VuZGlmCisKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVJZDsgfQorICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1
cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGlwcGVkOyB9CisKKyAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKKworICAg
IHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25z
dCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRl
eHR1cmVfaWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgbV90ZXh0
dXJlSWQ7CisgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBXZWJGbG9hdFJlY3Qg
bV91dlJlY3Q7CisgICAgYm9vbCBtX2ZsaXBwZWQ7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVkMzFiMjQ1N2JhNjI3Yjgx
YzE4ODk5MjE0NTFmMzllZDlmNTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclRpbGVRdWFkX2gKKyNkZWZpbmUgV2ViQ29t
cG9zaXRvclRpbGVRdWFkX2gKKworI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1
ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRl
ICJXZWJTaXplLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yVGls
ZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVh
ZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVj
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBi
b29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworCisg
ICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJ
ZDsgfQorICAgIFdlYkNvcmU6OkludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVPZmZzZXQ7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHRleHR1cmVTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQorICAgIEdDM0RpbnQgdGV4dHVyZUZpbHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUZpbHRlcjsgfQorICAgIGJvb2wgc3dpenpsZUNv
bnRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zd2l6emxlQ29udGVudHM7IH0KKworICAgIGJvb2wg
bGVmdEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdEVkZ2VBQTsgfQorICAgIGJvb2wgdG9w
RWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV90b3BFZGdlQUE7IH0KKyAgICBib29sIHJpZ2h0RWRn
ZUFBKCkgY29uc3QgeyByZXR1cm4gbV9yaWdodEVkZ2VBQTsgfQorICAgIGJvb2wgYm90dG9tRWRn
ZUFBKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21FZGdlQUE7IH0KKworICAgIGJvb2wgaXNBbnRp
YWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCBy
aWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgpOyB9CisjZW5kaWYKKworICAgIHN0YXRpYyBj
b25zdCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3Np
dG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICAgV2Vi
Q29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
b3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOworI2VuZGlmCisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOworICAgIFdl
YlBvaW50IG1fdGV4dHVyZU9mZnNldDsKKyAgICBXZWJTaXplIG1fdGV4dHVyZVNpemU7CisgICAg
R0MzRGludCBtX3RleHR1cmVGaWx0ZXI7CisgICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsKKyAg
ICBib29sIG1fbGVmdEVkZ2VBQTsKKyAgICBib29sIG1fdG9wRWRnZUFBOworICAgIGJvb2wgbV9y
aWdodEVkZ2VBQTsKKyAgICBib29sIG1fYm90dG9tRWRnZUFBOworfTsKKworI3ByYWdtYSBwYWNr
KHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3MmY3NGUyNDZhODczZTgy
NjkxMTkzNWI2ODBmNTJjMzBmOTFmM2FmLi5lMzhiZTkyYWQyOTRhOTIxOTVjZDY3MjI1NjczYmEw
ZjMxYTMyZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MTkxLDYgKzgxOTEsMTUgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQXVkaW9CdXMuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvclF1YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclN0
cmVhbVZpZGVvUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkRhdGEuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKQEAgLTgyODMs
MTcgKzgyOTIsMTQgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FuaW1hdGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RhbWFnZVRyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdSZWN0SGlzdG9yeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxh
cy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRm9u
dEF0bGFzLmgnLApAQCAtODMwNCw3ICs4MzEwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURy
YXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJT1N1cmZhY2VEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLApAQCAtODM2
OCwxOSArODM3MywxNSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZURyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oJywKQEAgLTgzOTAsNyArODM5MSw2IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRUYXNrLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZURyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JDaGVja2VyYm9hcmRRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3
MGRiMmI4NDI1YmJkZjMwOTQxOGQ5YjA5NzI4Zjk2ZWU4YmI5YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFk
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UGFzc093blB0cjxXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZD4gV2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCkpOworfQorCitXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6V2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAgICA6IFdl
YkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OkNoZWNr
ZXJib2FyZCwgcXVhZFJlY3QpCit7Cit9CisKK2NvbnN0IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9h
cmRRdWFkKiBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0
IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgp
ID09IFdlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCo+KHF1YWQpOworfQorCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFjN2QzNGUyYjRiOTQ4YzI0ZGQ3YmVhMmM2MDQ2NjUzMjZlMTAzYzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9y
ZGVyUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZD4gV2ViQ29tcG9z
aXRvckRlYnVnQm9yZGVyUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3Ig
Y29sb3IsIGludCB3aWR0aCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0
b3JEZWJ1Z0JvcmRlclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgY29sb3IsIHdpZHRo
KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ6OldlYkNvbXBvc2l0b3JEZWJ1
Z0JvcmRlclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvciwgaW50IHdpZHRo
KQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9y
UXVhZDo6RGVidWdCb3JkZXIsIHF1YWRSZWN0KQorICAgICwgbV9jb2xvcihjb2xvcikKKyAgICAs
IG1fd2lkdGgod2lkdGgpCit7CisgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7CisgICAgaWYgKFNr
Q29sb3JHZXRBKG1fY29sb3IpIDwgMjU1KQorICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVl
OworfQorCitjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKiBXZWJDb21wb3NpdG9y
RGVidWdCb3JkZXJRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1
YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6
OkRlYnVnQm9yZGVyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRv
ckRlYnVnQm9yZGVyUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvcklPU3VyZmFjZVF1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYTI5MzE0ZGFkZGY5OGQxYzg4OTUx
MDMxZmJlMWFlOTE4MGM4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxXZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZD4gV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZh
Y2VUZXh0dXJlSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBpb1N1cmZhY2VTaXplLCBpb1N1
cmZhY2VUZXh0dXJlSWQpKTsKK30KKworV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6OldlYkNv
bXBvc2l0b3JJT1N1cmZhY2VRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKKyAgICA6IFdlYkNv
bXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OklPU3VyZmFj
ZUNvbnRlbnQsIHF1YWRSZWN0KQorICAgICwgbV9pb1N1cmZhY2VTaXplKGlvU3VyZmFjZVNpemUp
CisgICAgLCBtX2lvU3VyZmFjZVRleHR1cmVJZChpb1N1cmZhY2VUZXh0dXJlSWQpCit7Cit9CisK
K2NvbnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKiBXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAg
IEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VD
b250ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvcklPU3Vy
ZmFjZVF1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZmMzNGExYTYxMDQxMTgxZWQwMTM1ZTcyMTRhYjE4ZDNiYzNkZmExCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9yUXVhZC5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaD4KKworI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1
YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVR
dWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQ29tcG9zaXRvclF1YWQ6OldlYkNvbXBvc2l0b3JRdWFkKGNvbnN0IFdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgTWF0ZXJpYWwgbWF0ZXJpYWwsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0KQorICAgIDogbV9zaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVh
ZFN0YXRlKQorICAgICwgbV9tYXRlcmlhbChtYXRlcmlhbCkKKyAgICAsIG1fcXVhZFJlY3QocXVh
ZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxlUmVjdChxdWFkUmVjdCkKKyAgICAsIG1fcXVhZE9w
YXF1ZSh0cnVlKQorICAgICwgbV9uZWVkc0JsZW5kaW5nKGZhbHNlKQoreworICAgIEFTU0VSVCht
X3NoYXJlZFF1YWRTdGF0ZSk7CisgICAgQVNTRVJUKG1fbWF0ZXJpYWwgIT0gSW52YWxpZCk7Cit9
CisKK0ludFJlY3QgV2ViQ29tcG9zaXRvclF1YWQ6Om9wYXF1ZVJlY3QoKSBjb25zdAoreworICAg
IGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICBpZiAo
bV9zaGFyZWRRdWFkU3RhdGUtPm9wYXF1ZSAmJiBtX3F1YWRPcGFxdWUpCisgICAgICAgIHJldHVy
biBtX3F1YWRSZWN0OworICAgIHJldHVybiBtX29wYXF1ZVJlY3Q7Cit9CisKK3ZvaWQgV2ViQ29t
cG9zaXRvclF1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJs
ZVJlY3QpCit7CisgICAgSW50UmVjdCBpbnRlcnNlY3Rpb24gPSBxdWFkVmlzaWJsZVJlY3Q7Cisg
ICAgaW50ZXJzZWN0aW9uLmludGVyc2VjdChtX3F1YWRSZWN0KTsKKyAgICBtX3F1YWRWaXNpYmxl
UmVjdCA9IGludGVyc2VjdGlvbjsKK30KKwordW5zaWduZWQgV2ViQ29tcG9zaXRvclF1YWQ6OnNp
emUoKSBjb25zdAoreworICAgIHN3aXRjaCAobWF0ZXJpYWwoKSkgeworICAgIGNhc2UgQ2hlY2tl
cmJvYXJkOgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRR
dWFkKTsKKyAgICBjYXNlIERlYnVnQm9yZGVyOgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQpOworICAgIGNhc2UgSU9TdXJmYWNlQ29udGVudDoKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCk7CisgICAgY2Fz
ZSBUZXh0dXJlQ29udGVudDoKKyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOworICAgIGNhc2UgU29saWRDb2xvcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihX
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQpOworICAgIGNhc2UgVGlsZWRDb250ZW50OgorICAg
ICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JUaWxlUXVhZCk7CisgICAgY2FzZSBTdHJl
YW1WaWRlb0NvbnRlbnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvclN0cmVh
bVZpZGVvUXVhZCk7CisgICAgY2FzZSBJbnZhbGlkOgorICAgIGNhc2UgUmVuZGVyUGFzczoKKyAg
ICBjYXNlIFlVVlZpZGVvQ29udGVudDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQ1JB
U0goKTsKKyAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JRdWFkKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzI0MDAxYWEzYTc0N2NiNGQ1ODljM2NiZmI5NTQxNDhjZjBlNmI2OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
Lmg+CisKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgi
CisKK3VzaW5nIFdlYkNvcmU6OkZsb2F0UXVhZDsKK3VzaW5nIFdlYkNvcmU6OkludFJlY3Q7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjpXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKCkKKyAgICA6IG9wYWNpdHkoMCkKKyAgICAsIG9wYXF1
ZShvcGFxdWUpCit7Cit9CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZT4gV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVj
dCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3Jt
LCBsYXllclRyYW5zZm9ybSwgbGF5ZXJSZWN0LCBzY2lzc29yUmVjdCwgb3BhY2l0eSwgb3BhcXVl
KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpCisgICAgOiBxdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCisgICAg
LCBsYXllclRyYW5zZm9ybShsYXllclRyYW5zZm9ybSkKKyAgICAsIGxheWVyUmVjdChsYXllclJl
Y3QpCisgICAgLCBzY2lzc29yUmVjdChzY2lzc29yUmVjdCkKKyAgICAsIG9wYWNpdHkob3BhY2l0
eSkKKyAgICAsIG9wYXF1ZShvcGFxdWUpCit7Cit9CisKK2Jvb2wgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0Cit7CisgICAgLy8g
Tm90ZTogdGhpcyBkb2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0aW9uIG1hdHJpY2Vz
LgorICAgIC8vIEFzc3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5kIGhhdmUgaW50ZWdl
ciBzY2FsZXMgYW5kIHRyYW5zbGF0aW9ucy4KKyAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKKyAg
ICBGbG9hdFF1YWQgcXVhZCA9IFdlYkNvcmU6OkNDTWF0aFV0aWw6Om1hcFF1YWQocXVhZFRyYW5z
Zm9ybSwgRmxvYXRRdWFkKEludFJlY3QobGF5ZXJSZWN0KSksIGNsaXBwZWQpOworICAgIHJldHVy
biAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94KCku
aXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJiYTI1NTFkNjYxMmViYWZmYWMx
ZjkwZWFlNDgyNjEzYTQ2MGNmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcApA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRv
clNvbGlkQ29sb3JRdWFkPiBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZShjb25z
dCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgY29sb3IpKTsKK30KKworV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0Nv
bG9yIGNvbG9yKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJD
b21wb3NpdG9yUXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9y
KQoreworICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkKKyAgICAgICAgbV9xdWFk
T3BhcXVlID0gZmFsc2U7CisgICAgZWxzZQorICAgICAgICBtX29wYXF1ZVJlY3QgPSBxdWFkUmVj
dDsKK30KKworY29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKiBXZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVh
ZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6
U29saWRDb2xvcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JT
b2xpZENvbG9yUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3Np
dG9yU3RyZWFtVmlkZW9RdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTI1N2FhZjdlMzQxZGVjNDg0N2Uw
MzFmZGUwMDBkMjNmNjFjYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmNwcApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQ+IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ6OmNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJ
ZCwgbWF0cml4KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ6OldlYkNvbXBv
c2l0b3JTdHJlYW1WaWRlb1F1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVy
ZUlkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorICAgIDogV2ViQ29t
cG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFtVmlk
ZW9Db250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAs
IG1fbWF0cml4KG1hdHJpeCkKK3sKK30KKworY29uc3QgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVv
UXVhZCogV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdl
YkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09
IFdlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKj4ocXVhZCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NWY0NWZkYzRjYjJhNThmNzI4N2Y1ZmFjNWRjNTZiZGQyMzA0MDdiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0
cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBl
ZCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwg
dXZSZWN0LCBmbGlwcGVkKSk7Cit9CisKK1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQg
dGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1f
dGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRp
cGxpZWRBbHBoYSkKKyAgICAsIG1fdXZSZWN0KHV2UmVjdCkKKyAgICAsIG1fZmxpcHBlZChmbGlw
cGVkKQoreworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6c2V0TmVlZHNCbGVu
ZGluZygpCit7CisgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKK30KKworY29uc3QgV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkKiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1hdGVyaWFsQ2Fz
dChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChx
dWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCo+KHF1
YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjkwNjNkZTI1MmY2NGMxZDFjNjZmNzJiY2EwZjA0MDA5YTM0YjkyYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvclRpbGVRdWFkLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8
V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZShjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNp
emUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRl
bnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBi
b29sIGJvdHRvbUVkZ2VBQSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0
b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJl
SWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29u
dGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkp
OworfQorCitXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNp
emUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRl
bnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBi
b29sIGJvdHRvbUVkZ2VBQSkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX3Rl
eHR1cmVJZCh0ZXh0dXJlSWQpCisgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkK
KyAgICAsIG1fdGV4dHVyZVNpemUodGV4dHVyZVNpemUpCisgICAgLCBtX3RleHR1cmVGaWx0ZXIo
dGV4dHVyZUZpbHRlcikKKyAgICAsIG1fc3dpenpsZUNvbnRlbnRzKHN3aXp6bGVDb250ZW50cykK
KyAgICAsIG1fbGVmdEVkZ2VBQShsZWZ0RWRnZUFBKQorICAgICwgbV90b3BFZGdlQUEodG9wRWRn
ZUFBKQorICAgICwgbV9yaWdodEVkZ2VBQShyaWdodEVkZ2VBQSkKKyAgICAsIG1fYm90dG9tRWRn
ZUFBKGJvdHRvbUVkZ2VBQSkKK3sKKyAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQorICAgICAgICBt
X25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7Cit9
CisKK2NvbnN0IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCogV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpt
YXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJU
KHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCo+KHF1YWQp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWI1
OTI5YTM0NjkxN2E1ZTZjNDExYTUwYTAxYTkyZGZmZGVkNzg0Li5hZWE2YmI1N2IxYmZlMGMyYzBh
OTRkNzZiMWJmNjI4OTFmOTY4NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTQ3LDI0ICs0NywxNSBAQAogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxv
YWRlci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCi0j
aW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFkLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9D
Q1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3Bl
ZFRleHR1cmUuaCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1
YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViVmlkZW9GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpA
QCAtNDE0LDcgKzQwNSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVy
UGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0CiAgICAgICAgIGRyYXdR
dWFkKGl0LT5nZXQoKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVh
ZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCiB7CiAgICAgSW50
UmVjdCBzY2lzc29yUmVjdCA9IHF1YWQtPnNjaXNzb3JSZWN0KCk7CiAKQEAgLTQzMCwzNSArNDIx
LDM1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdR
dWFkKiBxdWFkKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAgICBzd2l0Y2ggKHF1YWQtPm1hdGVyaWFsKCkp
IHsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkludmFsaWQ6CisgICAgY2FzZSBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQ6Ci0gICAgICAg
IGRyYXdDaGVja2VyYm9hcmRRdWFkKHF1YWQtPnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSk7Cisg
ICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQ6CisgICAgICAg
IGRyYXdDaGVja2VyYm9hcmRRdWFkKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2Fz
dChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6RGVidWdCb3Jk
ZXI6Ci0gICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQocXVhZC0+dG9EZWJ1Z0JvcmRlckRyYXdR
dWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXI6
CisgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRl
cmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OklP
U3VyZmFjZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdJT1N1cmZhY2VRdWFkKHF1YWQtPnRvSU9TdXJm
YWNlRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJT1N1
cmZhY2VDb250ZW50OgorICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChDQ0lPU3VyZmFjZURyYXdR
dWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJh
d1F1YWQ6OlJlbmRlclBhc3M6Ci0gICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChxdWFkLT50b1Jl
bmRlclBhc3NEcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6
OlJlbmRlclBhc3M6CisgICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0Ry
YXdRdWFkOjpTb2xpZENvbG9yOgotICAgICAgICBkcmF3U29saWRDb2xvclF1YWQocXVhZC0+dG9T
b2xpZENvbG9yRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFk
OjpTb2xpZENvbG9yOgorICAgICAgICBkcmF3U29saWRDb2xvclF1YWQoV2ViS2l0OjpXZWJDb21w
b3NpdG9yU29saWRDb2xvclF1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6U3RyZWFtVmlkZW9Db250ZW50OgotICAgICAgICBkcmF3
U3RyZWFtVmlkZW9RdWFkKHF1YWQtPnRvU3RyZWFtVmlkZW9EcmF3UXVhZCgpKTsKKyAgICBjYXNl
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVhbVZpZGVvQ29udGVudDoKKyAgICAgICAg
ZHJhd1N0cmVhbVZpZGVvUXVhZChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChx
dWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6VGV4dHVyZUNvbnRl
bnQ6Ci0gICAgICAgIGRyYXdUZXh0dXJlUXVhZChxdWFkLT50b1RleHR1cmVEcmF3UXVhZCgpKTsK
KyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50OgorICAg
ICAgICBkcmF3VGV4dHVyZVF1YWQoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1h
dGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50OgotICAgICAgICBkcmF3VGlsZVF1YWQocXVhZC0+dG9UaWxlRHJhd1F1YWQo
KSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUaWxlZENvbnRlbnQ6Cisg
ICAgICAgIGRyYXdUaWxlUXVhZChDQ1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpZVVZWaWRlb0NvbnRlbnQ6Ci0g
ICAgICAgIGRyYXdZVVZWaWRlb1F1YWQocXVhZC0+dG9ZVVZWaWRlb0RyYXdRdWFkKCkpOworICAg
IGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250ZW50OgorICAgICAg
ICBkcmF3WVVWVmlkZW9RdWFkKENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAppbmRleCA2YWZlNjY4MDZjZTk4MWY0YjNlMDA4ZTc5ODY2NmE1MmEwOWRkOWFiLi40MTU1
MjBkN2ZkOWU5MzgxZTY1ZTUwM2ZhOWI3M2ZiNWY5ZDk4Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsMTYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNpbmNsdWRlICJUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAi
Y2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgorI2luY2x1ZGUgImNjL0NDU29saWRD
b2xvckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCisj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3
UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDYsMTcgKzU1LDcgQEAg
Y2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsK
LWNsYXNzIENDRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ7CiBjbGFzcyBDQ1Njb3BlZFRleHR1cmU7Ci1jbGFzcyBDQ1NvbGlk
Q29sb3JEcmF3UXVhZDsKLWNsYXNzIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIENDVGV4
dHVyZURyYXdRdWFkOwotY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVvRHJh
d1F1YWQ7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7CiBjbGFzcyBTY29wZWRFbnN1cmVGcmFtZWJ1
ZmZlckFsbG9jYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZTAzMzUxNGE2ODQ2YWI5ZjRj
YjFmY2IxYjk2MTU4ZmYyZDAyM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NDaGVj
a2VyYm9hcmREcmF3UXVhZD4gQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDaGVja2VyYm9hcmREcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0KSk7Ci19Ci0KLUNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OkND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCi0gICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkKLXsKLX0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCmluZGV4IDI3ZjhjNTZiZDQ5
YzQ1ZTMwNTVhM2ZhN2NiNmU3YTcyNWU1ZjQzZjEuLjM1MTA0ZGNmNWIzYzdlOWYyZjg1NWI1ZjIy
MDVhNjFjMWI2YjljN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFk
LmgKQEAgLTI2LDIwICsyNiwxMCBAQAogI2lmbmRlZiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gK
ICNkZWZpbmUgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdR
dWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOwotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKLQotcHJpdmF0ZToKLSAgICBDQ0No
ZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYpOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFk
IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVidWdCb3JkZXJEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1
MjdjNDdjNTU3NmY5NmFjN2YzOTk5Y2MwN2ExZDUwZDEzZmI2N2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Q
YXNzT3duUHRyPENDRGVidWdCb3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDRGVidWdCb3JkZXJEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBjb2xvciwgd2lkdGgpKTsKLX0KLQotQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLSAgICA6
IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRlciwgcXVh
ZFJlY3QpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV93aWR0aCh3aWR0aCkKLXsKLSAg
ICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAy
NTUpCi0gICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3Jk
ZXJEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKaW5kZXggZWExY2Y4NDc2MDQxZDFiMTcyZTZjMDI2
YzdmNzg2MjgxYWNlNDRmNC4uYTcyYzI3NDE3NmEwNmEzNjQyZjIxNjgwY2E1NDcyNTBhMjJhMWE2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjcgKzI2LDEwIEBA
CiAjaWZuZGVmIENDRGVidWdCb3JkZXJEcmF3UXVhZF9oCiAjZGVmaW5lIENDRGVidWdCb3JkZXJE
cmF3UXVhZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVh
ZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwotCi0gICAg
U2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0gICAgaW50IHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotCi1wcml2YXRlOgotICAgIENDRGVidWdCb3Jk
ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0Nv
bG9yLCBpbnQgd2lkdGgpOwotCi0gICAgU2tDb2xvciBtX2NvbG9yOwotICAgIGludCBtX3dpZHRo
OwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY1NjIxZGI1MzZkZGE1Zjk1ZjI1YjAzYjcy
YzFmMmI5ZjYxODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLQotI2luY2x1ZGUgImNjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1
YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5oIgotI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgotI2luY2x1ZGUgImNj
L0NDVGV4dHVyZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLSNp
bmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1DQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKLSAg
ICA6IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKLSAgICAsIG1fbWF0ZXJpYWwo
bWF0ZXJpYWwpCi0gICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQotICAgICwgbV9xdWFkVmlzaWJs
ZVJlY3QocXVhZFJlY3QpCi0gICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKLSAgICAsIG1fbmVlZHNC
bGVuZGluZyhmYWxzZSkKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOwotICAgIEFT
U0VSVChtX21hdGVyaWFsICE9IEludmFsaWQpOwotfQotCi1JbnRSZWN0IENDRHJhd1F1YWQ6Om9w
YXF1ZVJlY3QoKSBjb25zdAotewotICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKLSAgICAgICAgcmV0
dXJuIEludFJlY3QoKTsKLSAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYg
bV9xdWFkT3BhcXVlKQotICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKLSAgICByZXR1cm4gbV9v
cGFxdWVSZWN0OwotfQotCi12b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25z
dCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCi17Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBx
dWFkVmlzaWJsZVJlY3Q7Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fcXVhZFJl
Y3QpOwotfQotCi1jb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0No
ZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBD
aGVja2VyYm9hcmQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogQ0NE
cmF3UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9t
YXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEND
RGVidWdCb3JkZXJEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ0lPU3VyZmFjZURyYXdR
dWFkKiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFjZURyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9tYXRlcmlhbCA9PSBJT1N1cmZhY2VDb250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1JlbmRl
clBhc3NEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdAot
ewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclBhc3MpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBD
Q1NvbGlkQ29sb3JEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBj
b25zdAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFNvbGlkQ29sb3IpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1j
b25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU3RyZWFtVmlkZW9EcmF3
UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gU3RyZWFtVmlkZW9Db250
ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
Kj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1Rl
eHR1cmVEcmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVGV4dHVy
ZUNvbnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RleHR1cmVEcmF3UXVh
ZCo+KHRoaXMpOwotfQotY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURy
YXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBUaWxlZENvbnRlbnQp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RpbGVEcmF3UXVhZCo+KHRoaXMpOwot
fQotCi1jb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvWVVWVmlkZW9EcmF3
UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gWVVWVmlkZW9Db250ZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKj4odGhp
cyk7Ci19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDc1NmI2ODAzNmRkNjYzNzdlNDUx
ZDJlMTcyMGE4YWE3NGE4ZjEwZTAuLjYxNGQyMGUwNDE3OGUxYzJlNzI0NDViNTcwNmQ2OWU1MGM3
MGI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTI2LDkxICsyNiwxMCBAQAogI2lmbmRlZiBD
Q0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ1NoYXJl
ZFF1YWRTdGF0ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7Ci1jbGFz
cyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xh
c3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ7Ci1jbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKLWNs
YXNzIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIENDVGV4dHVyZURyYXdRdWFkOwotY2xh
c3MgQ0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQ7Ci0KLS8vIENDRHJh
d1F1YWQgaXMgYSBiYWcgb2YgZGF0YSB1c2VkIGZvciBkcmF3aW5nIGEgcXVhZC4gQmVjYXVzZSBk
aWZmZXJlbnQKLS8vIG1hdGVyaWFscyBuZWVkIGRpZmZlcmVudCBiaXRzIG9mIHBlci1xdWFkIGRh
dGEgdG8gcmVuZGVyLCBjbGFzc2VzIHRoYXQgZGVyaXZlCi0vLyBmcm9tIENDRHJhd1F1YWQgc3Rv
cmUgYWRkaXRpb25hbCBkYXRhIGluIHRoZWlyIGRlcml2ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlh
bAotLy8gZW51bSBpcyB1c2VkIHRvICJzYWZlbHkiIHVwY2FzdCB0byB0aGUgZGVyaXZlZCBjbGFz
cy4KLWNsYXNzIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDRHJhd1F1
YWQpOwotcHVibGljOgotICAgIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9xdWFkUmVjdDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+cXVh
ZFRyYW5zZm9ybSgpOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5
ZXJUcmFuc2Zvcm0oKTsgfQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQotICAgIGNvbnN0IEludFJl
Y3QmIHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPnNjaXNz
b3JSZWN0KCk7IH0KLSAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRR
dWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgYmxlbmRp
bmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIGFyZSBvcGFxdWU/Ci0g
ICAgSW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMo
bV9xdWFkVmlzaWJsZVJlY3QpOyB9Ci0gICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QoKTsgfQotCi0gICAgLy8gQWxsb3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBk
cmF3biB0byBtYWtlIGl0IHNtYWxsZXIuIFBhcmFtZXRlciBwYXNzZWQKLSAgICAvLyBpbiB3aWxs
IGJlIGNsaXBwZWQgdG8gcXVhZFJlY3QoKS4KLSAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChj
b25zdCBJbnRSZWN0Jik7Ci0gICAgY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KLQotICAgIGVudW0gTWF0ZXJpYWwgewot
ICAgICAgICBJbnZhbGlkLAotICAgICAgICBDaGVja2VyYm9hcmQsCi0gICAgICAgIERlYnVnQm9y
ZGVyLAotICAgICAgICBJT1N1cmZhY2VDb250ZW50LAotICAgICAgICBSZW5kZXJQYXNzLAotICAg
ICAgICBUZXh0dXJlQ29udGVudCwKLSAgICAgICAgU29saWRDb2xvciwKLSAgICAgICAgVGlsZWRD
b250ZW50LAotICAgICAgICBZVVZWaWRlb0NvbnRlbnQsCi0gICAgICAgIFN0cmVhbVZpZGVvQ29u
dGVudCwKLSAgICB9OwotCi0gICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25zdCB7IHJldHVybiBt
X21hdGVyaWFsOyB9Ci0gICAgYm9vbCBpc0RlYnVnUXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
ZXJpYWwgPT0gRGVidWdCb3JkZXI7IH0KLQotICAgIGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQqIHRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQqIHRvRGVidWdCb3JkZXJEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IEND
SU9TdXJmYWNlRHJhd1F1YWQqIHRvSU9TdXJmYWNlRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25z
dCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogdG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdDsKLSAg
ICBjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogdG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25z
dDsKLSAgICBjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIHRvU3RyZWFtVmlkZW9EcmF3UXVh
ZCgpIGNvbnN0OwotICAgIGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiB0b1RleHR1cmVEcmF3UXVh
ZCgpIGNvbnN0OwotICAgIGNvbnN0IENDVGlsZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNv
bnN0OwotICAgIGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogdG9ZVVZWaWRlb0RyYXdRdWFkKCkg
Y29uc3Q7Ci0KLSAgICBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGU7IH0KLQotcHJvdGVjdGVkOgotICAgIEND
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBNYXRlcmlhbCwgY29uc3QgSW50UmVj
dCYpOwotCi0gICAgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIG1fc2hhcmVkUXVhZFN0YXRlOwot
Ci0gICAgTWF0ZXJpYWwgbV9tYXRlcmlhbDsKLSAgICBJbnRSZWN0IG1fcXVhZFJlY3Q7Ci0gICAg
SW50UmVjdCBtX3F1YWRWaXNpYmxlUmVjdDsKLQotICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBzaGFy
ZWQgcXVhZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcXVhZCBpcwotICAg
IC8vIG9wYXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlk
ZSB3aXRoIHRoZXNlCi0gICAgLy8gdmFyaWFibGVzLgotICAgIGJvb2wgbV9xdWFkT3BhcXVlOwot
ICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOwotCi0gICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0
IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92
ZQotICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkg
b3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4KLSAgICBJbnRSZWN0IG1fb3BhcXVl
UmVjdDsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCBDQ0RyYXdRdWFk
OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZGI0ZWZjYmFhYzYwMDIzMmRlZTRjNGIyNmMw
OTg5NmYzMzVlZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VEcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4g
Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1
cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ0lPU3VyZmFjZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IGlvU3VyZmFjZVNpemUsIGlvU3VyZmFjZVRleHR1cmVJZCkpOwotfQotCi1DQ0lPU3VyZmFjZURy
YXdRdWFkOjpDQ0lPU3VyZmFjZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1
cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCi0gICAgOiBDQ0RyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6SU9TdXJmYWNlQ29udGVudCwgcXVhZFJlY3Qp
Ci0gICAgLCBtX2lvU3VyZmFjZVNpemUoaW9TdXJmYWNlU2l6ZSkKLSAgICAsIG1faW9TdXJmYWNl
VGV4dHVyZUlkKGlvU3VyZmFjZVRleHR1cmVJZCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
T1N1cmZhY2VEcmF3UXVhZC5oCmluZGV4IDI3Zjg2M2VlNjEzMGMwOGM1MjUzMjNhMjIxNWQzNDFm
OTllOGJhMDEuLjc3ZDMyNmNiZDBkODg0YmNkMGIyZmMwODcxMjAwYmJiNmI3NzdjMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9T
dXJmYWNlRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgKQEAgLTI2LDI2ICsyNiwxMCBAQAogI2lm
bmRlZiBDQ0lPU3VyZmFjZURyYXdRdWFkX2gKICNkZWZpbmUgQ0NJT1N1cmZhY2VEcmF3UXVhZF9o
CiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkIDogcHVibGljIEND
RHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSU9TdXJmYWNlRHJhd1F1YWQp
OwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSU9TdXJmYWNlRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOwotCi0gICAg
Y29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNl
U2l6ZTsgfQotICAgIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJu
IG1faW9TdXJmYWNlVGV4dHVyZUlkOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NJT1N1cmZhY2VEcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOwotCi0gICAg
SW50U2l6ZSBtX2lvU3VyZmFjZVNpemU7Ci0gICAgdW5zaWduZWQgbV9pb1N1cmZhY2VUZXh0dXJl
SWQ7Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQgQ0NJ
T1N1cmZhY2VEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAw
MGEzNTFiMjJkYjg0NGY3Yzc5N2E4MjljNGQxNmFiZmE2NmRhODBhLi40MDUyN2ViYzZjYWQ3OWFi
OWViZTZmZjI0ZWM1MGRlN2NkOGNlNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNl
LmgiCisjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ4LDcgKzQ5LDYgQEAgY2xh
c3MgQ0NMYXllclNvcnRlcjsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ1F1
YWRDdWxsZXI7CiBjbGFzcyBDQ1JlbmRlcmVyOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBj
bGFzcyBMYXllckNocm9taXVtOwogCiBjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDQ3
YWUyZjc0N2U4ZGQwN2E1NGViMGIyYzhlNDYyYWViMGE1NzhhZWUuLjYxMDAxNDViODc0MWE1ZDE5
YjFhZDZhODE5ZTVkZDliZDE4NzlmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC0yNywx
NiArMjcsMTYgQEAKICNkZWZpbmUgQ0NSZW5kZXJQYXNzX2gKIAogI2luY2x1ZGUgIlNrQ29sb3Iu
aCIKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDQ0RyYXdRdWFkOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBD
Q1JlbmRlclN1cmZhY2U7Ci1jbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIAogLy8gQSBsaXN0IG9m
IENDRHJhd1F1YWQgb2JqZWN0cywgc29ydGVkIGludGVybmFsbHkgaW4gZnJvbnQtdG8tYmFjayBv
cmRlci4KIGNsYXNzIENDUXVhZExpc3QgOiBwdWJsaWMgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFk
PiA+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCA3NWJk
NzYxZDE1NTM1ODY5MWMyYjA0Y2QxZTc2YmM3YTkzODM4MjllLi5lM2E4MWIzNzNkNzE3NmFiYmU0
NjBhMzVjZWQ0NTQ5ZGIwODJmNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwCkBAIC0yOSwxNCArMjksMTYgQEAKIAogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFz
cy5oIgogCit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywg
Ym9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywg
dW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NS
ZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKIHsKICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHJl
bmRlclBhc3MsIGlzUmVwbGljYSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tUZXh0
dXJlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKLUNDUmVuZGVyUGFz
c0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQ
YXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJh
Y2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKK0NDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVu
ZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
JiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVj
dCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3Jl
bmRlclBhc3MocmVuZGVyUGFzcykKICAgICAsIG1fcmVuZGVyUGFzc0lkKHJlbmRlclBhc3MtPmlk
KCkpCkBAIC00OSw0ICs1MSwxMCBAQCBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNz
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdAogICAgIEFTU0VS
VChtX3JlbmRlclBhc3MpOwogfQogCitjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JR
dWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0
b3JRdWFkOjpSZW5kZXJQYXNzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQqPihxdWFkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmgKaW5kZXggYjYzYTc2NDQ2ODM5Njk4MjBhNWJkMzAxZDEwNjZhMjZjNGU0NzYy
NS4uMjY4YjY4ZTc2ZmY1NTg4NjgwODZlZTFjNjJjZDY3MDM4N2ZiYmMxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
RHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEND
UmVuZGVyUGFzc0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCi0j
aW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9y
UXVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtMzQsMTAgKzM0LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ0NSZW5kZXJQYXNzOwogCi1jbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKK2NsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVi
bGljIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENDUmVuZGVyUGFzc0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1Jl
bmRlclBhc3MqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91
bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRl
clBhc3MoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3M7IH0KICAgICBpbnQgcmVuZGVyUGFz
c0lkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KQEAgLTQ4LDggKzQ4LDkgQEAg
cHVibGljOgogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmRGaWx0ZXJzOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1h
dGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgot
ICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBDQ1JlbmRl
clBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAg
ICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX3JlbmRlclBhc3M7CiAgICAgaW50IG1fcmVuZGVyUGFz
c0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA4OTRlYTVhZWEyZWZhZWU2YmNm
MDE1YjM4MGUwMzEyMjMzNGE5ZDcyLi4wNjhhNDEwNmJiZjIxY2RhNWU5YzQ2NmRjNDNkNzZiMDRm
M2YwYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMzEsNiArMzEsNyBAQAog
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
ImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJh
dGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQxLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xh
c3MgQ0NSZW5kZXJQYXNzOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBDQ0xheWVy
SW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRleHRTdHJlYW07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NoYXJlZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVlMDY4MWZmNWZhZmQyM2M1ODZjY2E3MWY5ZTE0NzA1NjgyMTcxNWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCi0KLSNpbmNsdWRlICJjYy9DQ01hdGhVdGls
LmgiCi0KLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFk
U3RhdGU6OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9y
bSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFj
aXR5LCBib29sIG9wYXF1ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2hhcmVkUXVh
ZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3JtLCBsYXllclJlY3QsIHNjaXNzb3JS
ZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKLX0KLQotQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVk
UXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlKQotICAgIDogbV9xdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCi0gICAg
LCBtX2xheWVyVHJhbnNmb3JtKGxheWVyVHJhbnNmb3JtKQotICAgICwgbV9sYXllclJlY3QobGF5
ZXJSZWN0KQotICAgICwgbV9zY2lzc29yUmVjdChzY2lzc29yUmVjdCkKLSAgICAsIG1fb3BhY2l0
eShvcGFjaXR5KQotICAgICwgbV9vcGFxdWUob3BhcXVlKQotewotfQotCi1ib29sIENDU2hhcmVk
UXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QKLXsKLSAgICAvLyBO
b3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93IG9yIHByb2plY3Rpb24gbWF0cmljZXMu
Ci0gICAgLy8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRlZ2Vy
IHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgotICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOwotICAg
IEZsb2F0UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtKCksIEZs
b2F0UXVhZChsYXllclJlY3QoKSksIGNsaXBwZWQpOwotICAgIHJldHVybiAhY2xpcHBlZCAmJiBx
dWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFz
SW50UmVjdCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaAppbmRleCA0
NTQwYTA2Zjg0ZWU1MmRmYWM1ZGUzNTYwNDhlYmIxOGM1OGRiNzJjLi4wMjc3MTAzNzM0Y2E1N2Y3
ODFhM2NlMzIxN2ZmZGVmZWY2MDRkNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRl
LmgKQEAgLTI2LDQwICsyNiwxMCBAQAogI2lmbmRlZiBDQ1NoYXJlZFF1YWRTdGF0ZV9oCiAjZGVm
aW5lIENDU2hhcmVkUXVhZFN0YXRlX2gKIAotI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
Q0NTaGFyZWRRdWFkU3RhdGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2hhcmVkUXVh
ZFN0YXRlKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFu
c2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNm
b3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0
LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7Ci0KLSAgICAvLyBUaGUgdHJhbnNmb3JtIHRo
YXQgcXVhZHMgaW4gYSBDQ0RyYXdRdWFkIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgotICAg
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3F1YWRUcmFuc2Zvcm07IH0KLSAgICAvLyBUaGUgdHJhbnNmb3JtIHRo
YXQgbGF5ZXJSZWN0KCkgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIHdpdGguCi0gICAgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX2xheWVyVHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllclJlY3Q7IH0KLSAgICBjb25zdCBJbnRSZWN0JiBzY2lzc29y
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJlY3Q7IH0KLQotICAgIGZsb2F0IG9wYWNp
dHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0KLSAgICBib29sIGlzT3BhcXVlKCkgY29u
c3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KLSAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJl
Y3QoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBDQ1NoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9v
bCBvcGFxdWUpOwotCi0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3F1YWRU
cmFuc2Zvcm07Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2xheWVyVHJh
bnNmb3JtOwotICAgIEludFJlY3QgbV9sYXllclJlY3Q7Ci0gICAgSW50UmVjdCBtX3NjaXNzb3JS
ZWN0OwotICAgIGZsb2F0IG1fb3BhY2l0eTsKLSAgICBib29sIG1fb3BhcXVlOwotfTsKLQordHlw
ZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgQ0NTaGFyZWRRdWFkU3Rh
dGU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY4MzY5YjY5YjcwOTZlYWMzMjVhMGY4
MTQ5ZmY4MDAwZmViOWY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NTb2xpZENvbG9yRHJh
d1F1YWQ+IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29s
b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NvbGlkQ29sb3JEcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvcikpOwotfQotCi1DQ1NvbGlkQ29sb3JEcmF3UXVh
ZDo6Q0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCi0gICAgOiBD
Q0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJl
Y3QpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotewotICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9y
KSA8IDI1NSkKLSAgICAgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAg
ICBtX29wYXF1ZVJlY3QgPSBxdWFkUmVjdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRD
b2xvckRyYXdRdWFkLmgKaW5kZXggODNlYTM0MDY2MTU3MDEwZjBkMTI5MmU4ZTE1NjMzY2UyYTE3
M2ViMS4uYjZjMGVlMDI1ZWEzYWUyYmJjYWFkNzM4NWZjZWJiYzNjYTY5Zjk2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDI1ICsyNiwxMCBAQAogI2lmbmRlZiBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZF9oCiAjZGVmaW5lIENDU29saWRDb2xvckRyYXdRdWFkX2gKIAotI2lu
Y2x1ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29s
b3JRdWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTb2xpZENvbG9yRHJh
d1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NT
b2xpZENvbG9yRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU29s
aWRDb2xvckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgU2tDb2xvcik7Ci0KLSAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9jb2xvcjsgfTsKLQotcHJpdmF0ZToKLSAgICBDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yKTsKLQotICAgIFNrQ29s
b3IgbV9jb2xvcjsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yU29saWRDb2xv
clF1YWQgQ0NTb2xpZENvbG9yRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZhMWJhMjk5MjNmNmQwZTAzMTg2NWUzYTU0MmE4NGIxNDBlMDhhNGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNs
dWRlICJjYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1QYXNzT3duUHRyPENDU3RyZWFtVmlkZW9EcmF3UXVhZD4gQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJ
ZCwgbWF0cml4KSk7Ci19Ci0KLUNDU3RyZWFtVmlkZW9EcmF3UXVhZDo6Q0NTdHJlYW1WaWRlb0Ry
YXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBDQ0RyYXdRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV90
ZXh0dXJlSWQodGV4dHVyZUlkKQotICAgICwgbV9tYXRyaXgobWF0cml4KQotewotfQotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1N0cmVhbVZpZGVvRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCmluZGV4IDMwMzczNDhkMzU0ZjZl
YjdlOTc4YTU0ZTVjODdhNmQ2ZDQ2MjBiNmUuLmExODkwNjExYTQ0MWQyZGI4YTI0Njc2ZDM4Zjg1
ZDM4NGVkZWRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCkBA
IC0yNiwyNyArMjYsMTAgQEAKICNpZm5kZWYgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkX2gKICNkZWZp
bmUgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIK
LSNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlk
ZW9RdWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
U3RyZWFtVmlkZW9EcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NT
dHJlYW1WaWRlb0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7Ci0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVJZDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9Ci0KLXByaXZhdGU6Ci0gICAg
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50
UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpOwotCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX21hdHJpeDsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJD
b21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJkYmNhOTVmYmU4ZTYxODFkNjM5MjYxOTEzZDE0ZGUxMmIyOWM5ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUGFzc093blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBo
YSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDVGV4dHVyZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKLX0KLQot
Q0NUZXh0dXJlRHJhd1F1YWQ6OkNDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0
ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVj
dCwgYm9vbCBmbGlwcGVkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1
cmVJZCkKLSAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRpcGxpZWRBbHBoYSkKLSAg
ICAsIG1fdXZSZWN0KHV2UmVjdCkKLSAgICAsIG1fZmxpcHBlZChmbGlwcGVkKQotewotfQotCi12
b2lkIENDVGV4dHVyZURyYXdRdWFkOjpzZXROZWVkc0JsZW5kaW5nKCkKLXsKLSAgICBtX25lZWRz
QmxlbmRpbmcgPSB0cnVlOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaApp
bmRleCBhNGJhZWZhMTMzYWY0YTAyMTNlOGU1ZjdmOTFkYzkyYWEwZDQzYTg2Li4yOGMzZDkxMzJm
YjU4ZDhkYTEyMGNjZjljMTU5YzE3MzQ1MTBkODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURy
YXdRdWFkLmgKQEAgLTI2LDMyICsyNiwxMCBAQAogI2lmbmRlZiBDQ1RleHR1cmVEcmF3UXVhZF9o
CiAjZGVmaW5lIENDVGV4dHVyZURyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1Rl
eHR1cmVEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDQ1RleHR1cmVEcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NUZXh0dXJlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBj
b25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKLQotICAgIHVuc2lnbmVkIHRl
eHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuICBtX3RleHR1cmVJZDsgfQotICAgIGJvb2wgcHJlbXVs
dGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9Ci0g
ICAgRmxvYXRSZWN0IHV2UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9Ci0gICAgYm9v
bCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVkOyB9Ci0KLSAgICB2b2lkIHNldE5l
ZWRzQmxlbmRpbmcoKTsKLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVEcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBi
b29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxp
cHBlZCk7Ci0gICAgCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX3ByZW11
bHRpcGxpZWRBbHBoYTsKLSAgICBGbG9hdFJlY3QgbV91dlJlY3Q7Ci0gICAgYm9vbCBtX2ZsaXBw
ZWQ7Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIENDVGV4
dHVyZURyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBk
Yzk0YzY5NTZiMDM5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVh
ZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IElu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURy
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1cmVJZCwg
dGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50
cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7Ci19
Ci0KLUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVj
dCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50
JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0
dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRv
cEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCi0gICAgOiBDQ0Ry
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBxdWFkUmVj
dCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAgICAsIG1fdGV4dHVyZU9mZnNldCh0
ZXh0dXJlT2Zmc2V0KQotICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKLSAgICAsIG1f
dGV4dHVyZUZpbHRlcih0ZXh0dXJlRmlsdGVyKQotICAgICwgbV9zd2l6emxlQ29udGVudHMoc3dp
enpsZUNvbnRlbnRzKQotICAgICwgbV9sZWZ0RWRnZUFBKGxlZnRFZGdlQUEpCi0gICAgLCBtX3Rv
cEVkZ2VBQSh0b3BFZGdlQUEpCi0gICAgLCBtX3JpZ2h0RWRnZUFBKHJpZ2h0RWRnZUFBKQotICAg
ICwgbV9ib3R0b21FZGdlQUEoYm90dG9tRWRnZUFBKQotewotICAgIGlmIChpc0FudGlhbGlhc2Vk
KCkpCi0gICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci0gICAgbV9vcGFxdWVSZWN0ID0g
b3BhcXVlUmVjdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKaW5kZXggMzM1MDFh
ODA2Y2ZhZmY5NjBmMjRjNmRkNmYxYzc4MjBhMTU3ODhjNS4uZDUzMGY0YTQ4ZjI5NDllYjNhY2Iy
OGE2M2MyYjc2Y2FhN2E5NDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ0ICsyNiwx
MCBAQAogI2lmbmRlZiBDQ1RpbGVEcmF3UXVhZF9oCiAjZGVmaW5lIENDVGlsZURyYXdRdWFkX2gK
IAotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yVGlsZVF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1RpbGVE
cmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
Q1RpbGVEcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJh
d1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSk7Ci0KLSAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZUlkOyB9Ci0gICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQotICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBjb25z
dCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9Ci0gICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9Ci0gICAgYm9vbCBzd2l6emxlQ29udGVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3N3aXp6bGVDb250ZW50czsgfQotCi0gICAgYm9vbCBsZWZ0
RWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0RWRnZUFBOyB9Ci0gICAgYm9vbCB0b3BFZGdl
QUEoKSBjb25zdCB7IHJldHVybiBtX3RvcEVkZ2VBQTsgfQotICAgIGJvb2wgcmlnaHRFZGdlQUEo
KSBjb25zdCB7IHJldHVybiBtX3JpZ2h0RWRnZUFBOyB9Ci0gICAgYm9vbCBib3R0b21FZGdlQUEo
KSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUVkZ2VBQTsgfQotCi0gICAgYm9vbCBpc0FudGlhbGlh
c2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VBQSgpIHx8IHJpZ2h0
RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1RpbGVEcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29u
c3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBH
QzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdl
QUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7
Ci0KLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOwotICAgIEludFBvaW50IG1fdGV4
dHVyZU9mZnNldDsKLSAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7Ci0gICAgR0MzRGludCBtX3Rl
eHR1cmVGaWx0ZXI7Ci0gICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsKLSAgICBib29sIG1fbGVm
dEVkZ2VBQTsKLSAgICBib29sIG1fdG9wRWRnZUFBOwotICAgIGJvb2wgbV9yaWdodEVkZ2VBQTsK
LSAgICBib29sIG1fYm90dG9tRWRnZUFBOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JUaWxlUXVhZCBDQ1RpbGVEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJh
d1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NZVVZWaWRlb0RyYXdRdWFkLmNwcAppbmRleCBhMmQ2MmJhNDRjODY1NzY2ZjlhYTI5OTUwZTQ4
YTUyYWQyNjFlYjQ3Li40M2YyZTJmNmY1NzhlOGQ0OGU4NjYxOTkwYWFiNzdhMzc4NjEzNDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1lVVlZpZGVvRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTI3LDE5ICsyNywyNyBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmgiCiAKK3VzaW5nIFdlYktpdDo6
V2ViQ29tcG9zaXRvclF1YWQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxD
Q1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJh
bWVQbGFuZSYgdlBsYW5lKQorUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHZQbGFuZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDWVVWVmlkZW9EcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB5UGxhbmUsIHVQbGFuZSwgdlBsYW5lKSk7CiB9CiAK
LUNDWVVWVmlkZW9EcmF3UXVhZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllcklt
cGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgdlBsYW5lKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6
OllVVlZpZGVvQ29udGVudCwgcXVhZFJlY3QpCitDQ1lVVlZpZGVvRHJhd1F1YWQ6OkNDWVVWVmlk
ZW9EcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQ
bGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUp
CisgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JR
dWFkOjpZVVZWaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQogICAgICwgbV95UGxhbmUoeVBsYW5lKQog
ICAgICwgbV91UGxhbmUodVBsYW5lKQogICAgICwgbV92UGxhbmUodlBsYW5lKQogewogfQogCitj
b25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1
YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OllVVlZpZGVvQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCo+KHF1YWQpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCmluZGV4IDBjZDc1OGM1YjBm
MDAzZDY0NjVkYjkzMzZjYjk3ZWY1YjFmMjQzY2YuLjY2ODRhZDg5Nzg0MTUwN2FiMzFiZmMzM2Ew
NWRiMTg2YmVkMDBkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oCkBAIC0y
NiwyMyArMjYsMjQgQEAKICNpZm5kZWYgQ0NZVVZWaWRlb0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NZ
VVZWaWRlb0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JR
dWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitjbGFz
cyBDQ1lVVlZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NZVVZWaWRlb0RyYXdRdWFkKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxh
bmUmIHZQbGFuZSk7CiAKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5
UGxhbmUoKSBjb25zdCB7IHJldHVybiBtX3lQbGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSgpIGNvbnN0IHsgcmV0dXJuIG1fdVBsYW5lOyB9CiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKCkgY29uc3QgeyBy
ZXR1cm4gbV92UGxhbmU7IH0KIAorICAgIHN0YXRpYyBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQq
IG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRl
OgotICAgIENDWVVWVmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xh
eWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKKyAgICBDQ1lVVlZpZGVvRHJhd1F1YWQoY29u
c3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpG
cmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSBt
X3lQbGFuZTsKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lIG1fdVBsYW5lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcApp
bmRleCBiMzU4MTk3NTlkNDE0MjQ5N2Q4Mjg1MjkwM2Q2MGU2NTUyMDBhNDUxLi42Y2M0ZDJjMzlj
YWNhMDI0MTlkYTQzYTU4NTFkZDZiNjliN2RjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcApAQCAtNDMsMTAgKzQzLDExIEBA
IHZvaWQgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGNvbnN0IENDUXVhZExpc3QmIHF1YWRz
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFk
cy5zaXplKCk7ICsraSkgewogICAgICAgICBDQ0RyYXdRdWFkKiBxdWFkID0gcXVhZHNbaV0uZ2V0
KCk7CisgICAgICAgIEludFJlY3QgcXVhZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwogCi0gICAg
ICAgIEVYUEVDVF9UUlVFKHJlY3QuY29udGFpbnMocXVhZC0+cXVhZFJlY3QoKSkpIDw8IHF1YWRT
dHJpbmcgPDwgaTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVtYWluaW5nLmNvbnRhaW5zKHF1YWQt
PnF1YWRSZWN0KCkpKSA8PCBxdWFkU3RyaW5nIDw8IGk7Ci0gICAgICAgIHJlbWFpbmluZy5zdWJ0
cmFjdChSZWdpb24ocXVhZC0+cXVhZFJlY3QoKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShyZWN0
LmNvbnRhaW5zKHF1YWRSZWN0KSkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBFWFBFQ1Rf
VFJVRShyZW1haW5pbmcuY29udGFpbnMocXVhZFJlY3QpKSA8PCBxdWFkU3RyaW5nIDw8IGk7Cisg
ICAgICAgIHJlbWFpbmluZy5zdWJ0cmFjdChSZWdpb24ocXVhZFJlY3QpKTsKICAgICB9CiAKICAg
ICBFWFBFQ1RfVFJVRShyZW1haW5pbmcuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IGI2NWU2ZTcy
YmY1OGMxZjMwMGFmZWFjYTBkMTk2YzEzNGU5YmU1ZGUuLmNjYWJiMDQ3ZWRiYmEyODRmNDNmNzEy
YzBlZTA2MmVjNmNjOWViNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtMTE2LDEzICsxMTYsMTMgQEAgVEVTVChD
Q1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNoYXJl
ZFF1YWRTdGF0ZSkKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlID0gcmVuZGVyU3VyZmFjZS0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAKLSAgICBFWFBF
Q1RfVFJVRShzaGFyZWRRdWFkU3RhdGUtPnF1YWRUcmFuc2Zvcm0oKS5pc0lkZW50aXR5KCkpOwot
ICAgIEVYUEVDVF9FUSgzMCwgc2hhcmVkUXVhZFN0YXRlLT5sYXllclRyYW5zZm9ybSgpLm00MSgp
KTsKLSAgICBFWFBFQ1RfRVEoNDAsIHNoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0oKS5t
NDIoKSk7Ci0gICAgRVhQRUNUX0VRKGNvbnRlbnRSZWN0LCBzaGFyZWRRdWFkU3RhdGUtPmxheWVy
UmVjdCgpKTsKLSAgICBFWFBFQ1RfRVEoY2xpcFJlY3QsIHNoYXJlZFF1YWRTdGF0ZS0+c2Npc3Nv
clJlY3QoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIHNoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSgpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uoc2hhcmVkUXVhZFN0YXRlLT5pc09wYXF1ZSgpKTsKKyAgICBFWFBF
Q1RfVFJVRShzaGFyZWRRdWFkU3RhdGUtPnF1YWRUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMzAsIHNoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0ubTQxKCkpOwor
ICAgIEVYUEVDVF9FUSg0MCwgc2hhcmVkUXVhZFN0YXRlLT5sYXllclRyYW5zZm9ybS5tNDIoKSk7
CisgICAgRVhQRUNUX0VRKGNvbnRlbnRSZWN0LCBJbnRSZWN0KHNoYXJlZFF1YWRTdGF0ZS0+bGF5
ZXJSZWN0KSk7CisgICAgRVhQRUNUX0VRKGNsaXBSZWN0LCBJbnRSZWN0KHNoYXJlZFF1YWRTdGF0
ZS0+c2Npc3NvclJlY3QpKTsKKyAgICBFWFBFQ1RfRVEoMSwgc2hhcmVkUXVhZFN0YXRlLT5vcGFj
aXR5KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2hhcmVkUXVhZFN0YXRlLT5vcGFxdWUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMjI3NjNjZWYzMzllNWJmZWVh
OTIwYTU0M2FkYzRmZjViMTFjYjY0Yi4uNTMyYWM2YmRjMGNhNzIyY2QxYzU2OTA0MzUzZWYwMDRi
NTg4MDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlk
Q29sb3JMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFRFU1QoQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdEJhY2tncm91bmRDb2xvckluUXVh
ZCkKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogCiAgICAgQVNTRVJUX0VRKHF1YWRDdWxsZXIucXVhZExp
c3QoKS5zaXplKCksIDFVKTsKLSAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBd
LT50b1NvbGlkQ29sb3JEcmF3UXVhZCgpLT5jb2xvcigpLCB0ZXN0Q29sb3IpOworICAgIEVYUEVD
VF9FUShDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWRDdWxsZXIucXVhZExp
c3QoKVswXS5nZXQoKSktPmNvbG9yKCksIHRlc3RDb2xvcik7CiB9CiAKIFRFU1QoQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdE9wYWNpdHlJblF1YWQpCkBAIC0xMDEsNyAr
MTAxLDcgQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlDb3JyZWN0T3Bh
Y2l0eUluUXVhZCkKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogCiAgICAgQVNTRVJUX0VRKHF1YWRDdWxs
ZXIucXVhZExpc3QoKS5zaXplKCksIDFVKTsKLSAgICBFWFBFQ1RfRVEob3BhY2l0eSwgcXVhZEN1
bGxlci5xdWFkTGlzdCgpWzBdLT50b1NvbGlkQ29sb3JEcmF3UXVhZCgpLT5vcGFjaXR5KCkpOwor
ICAgIEVYUEVDVF9FUShvcGFjaXR5LCBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS5nZXQoKSktPm9wYWNpdHkoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151788</attachid>
            <date>2012-07-11 14:56:46 -0700</date>
            <delta_ts>2012-07-11 15:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90582-20120711145646.patch</filename>
            <type>text/plain</type>
            <size>140588</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyOGJjZDU2NjJkMmRj
ODlkMmZlMTJiODJhNDQ4OGYyODkzYzgyM2NjLi44ZjJhNjc2YjA4YWFhZGFjYmY5NmE1N2Y4YTk0
NDk1NDg3ZjZjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMi0wNy0wNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIGNvbXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NT
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQsIGFuZCBhbGwgYnV0IHR3byBDQypEcmF3UXVhZAor
ICAgICAgICBjbGFzc2VzIHRvIHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAg
dG8gcHVzaGluZyB0aGVtCisgICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3Ig
dGhlIHViZXJjb21wb3NpdG9yLgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxp
emUgdGhlIGNsYXNzIGhpZXJhcmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20g
YXMgV2ViSW5wdXRFdmVudC4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQor
ICAgICAgICByZXF1aXJlbWVudHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBz
aXplLCBhbmQgYSBwYWNraW5nCisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUg
ZGF0YSBtZW1iZXJzIGFyZSBmaW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBh
CisgICAgICAgIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2Yg
dGhhdCwgd2UgY2FuIG1haW50YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5k
IGNvbnZlbmllbnQgQVBJcyAoYmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikg
YXMgdGhlIG9yaWdpbmFsIGNsYXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9u
LCB0aGUgb3JpZ2luYWwgV2ViQ29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRv
CisgICAgICAgIHRoZSBuZXcgY2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1
YWRTdGF0ZSB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENf
U1RSVUNUX1RSQUlUUyBtYWNybywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3Vz
dG9tCisgICAgICAgIHNlcmlhbGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhl
IHBvaW50ZXJzIGZyb20gcXVhZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAg
ICAgICAtIEkgY29udmVydGVkIHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRl
cmlhbENhc3QoKSBtZXRob2RzCisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiAgVGhhdCB3YXksIHRoZSBXZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24n
dCBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAg
LSBRdWFkIGNsYXNzZXMgbm90IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4K
KyAgICAgICAgbm9uLXViZXJjb21wb3NpdG9yIG1vZGUuICBDQ1JlbmRlclBhc3NEcmF3UXVhZCBh
bmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgIGFyZSBjdXJyZW50bHkgbm9uLVBPRCBhbmQg
SSBsZWZ0IHRoZW0gaW4gdGhlaXIgb3JpZ2luYWwgZmlsZXMuCisKKyAgICAgICAgVGhpcyBhcHBy
b2FjaCBpcyB0aGUgYmVzdCBJJ3ZlIGZvdW5kIHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFs
bAorICAgICAgICBXZWJDb3JlLWZhY2luZyBBUElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29k
ZSBkdXBsaWNhdGlvbiAobmV3IHF1YWQKKyAgICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUg
YWRkZWQgYnkgbW9kaWZ5aW5nIG9ubHkgb25lIHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28g
c2hvdWxkIG5vdCBiZSBhbiB1bnJlYXNvbmFibGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVy
IGNvZGUKKyAgICAgICAgcmVxdWlyZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclF1YWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpsYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzTGF5ZXJBeGlzQWxp
Z25lZEludFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzRGVidWdR
dWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6Om1hdGVyaWFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRTaGFyZWRRdWFkU3RhdGUpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckRyYXdRdWFkLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6Y29sb3IpOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnV2
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6dGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpwcmVtdWx0
aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
OmZsaXBwZWQpOgorCiAyMDEyLTA3LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIGEgV2ViS2l0OjpXZWIqIHdyYXBwZXIg
Zm9yIHRoZSBjYyBhbmltYXRpb24gY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2YTA1MjYxZDIzZTlj
NjQzMThjZDExZTc4YzRhNTc1MzljNGUwNjkuLmIwMDc3MzhmMDYxNDYzNmFmMDRhNDAwNjA1NWQ2
NzdkYWM1N2U4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTItMDctMDQgIEFs
ZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TW92ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIENDU2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkLCBhbmQgYWxsIGJ1dCB0d28gQ0MqRHJhd1F1YWQKKyAg
ICAgICAgY2xhc3NlcyB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBzdGVwIHRv
IHB1c2hpbmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkgZm9yIHRo
ZSB1YmVyY29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2VyaWFsaXpl
IHRoZSBjbGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIGFz
IFdlYklucHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhyZWUKKyAg
ICAgICAgcmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5pbmcgc2l6
ZSwgYW5kIGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2YXRlIGRh
dGEgbWVtYmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBhbmQgYQor
ICAgICAgICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNlIG9mIHRo
YXQsIHdlIGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9uIGFuZCBj
b252ZW5pZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJT04pIGFz
IHRoZSBvcmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNpdGlvbiwg
dGhlIG9yaWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRlZiB0bwor
ICAgICAgICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFyZWRRdWFk
U3RhdGUgd2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAgSVBDX1NU
UlVDVF9UUkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBBIGN1c3Rv
bQorICAgICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWluIHRoZSBw
b2ludGVycyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisKKyAgICAg
ICAgLSBJIGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8gbWF0ZXJp
YWxDYXN0KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xhc3Nlcy4g
IFRoYXQgd2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRvZXNuJ3Qg
bmVlZCB0byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAgICAgIC0g
UXVhZCBjbGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2VkIGluCisg
ICAgICAgIG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5k
IENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICBhcmUgY3VycmVudGx5IG5vbi1QT0QgYW5kIEkg
bGVmdCB0aGVtIGluIHRoZWlyIG9yaWdpbmFsIGZpbGVzLgorCisgICAgICAgIFRoaXMgYXBwcm9h
Y2ggaXMgdGhlIGJlc3QgSSd2ZSBmb3VuZCBzbyBmYXIsIHNpbmNlIGl0IHByZXNlcnZlcyBhbGwK
KyAgICAgICAgV2ViQ29yZS1mYWNpbmcgQVBJcyBhbmQgYXZvaWRzIHVubmVjZXNzYXJ5IGNvZGUg
ZHVwbGljYXRpb24gKG5ldyBxdWFkCisgICAgICAgIHR5cGVzIG9yIG1lbWJlcnMgY2FuIGJlIGFk
ZGVkIGJ5IG1vZGlmeWluZyBvbmx5IG9uZSBwbGFjZSkuICBUaGVyZQorICAgICAgICBhbHNvIHNo
b3VsZCBub3QgYmUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiBjdXN0b20gc2VyaWFsaXplciBj
b2RlCisgICAgICAgIHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vLW9wIHJl
ZmFjdG9yaW5nLikKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6V2ViQ29tcG9z
aXRvclF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJsZVJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnNldE5l
ZWRzQmxlbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaDoKKyAgICAgICAgKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3JkZXJE
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVy
aWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdC
b3JkZXJEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpDQ1N0
cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAg
ICAgIChDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVh
ZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAo
Q0NZVVZWaWRlb0RyYXdRdWFkKToKKwogMjAxMi0wNy0xMSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4
LiBVcGRhdGUgY29kZSB0byB1c2UgdGhlIG5ldyBjb25zdGFudCBuYW1lLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA2Mjk5MTM5MmFiNjNkYjAyMGMwZjY4NDhjZDU3NjdhMWNhYTEyOWMw
Li4yYzdhMjk5NWZmYzhkNDZkNjgzZGQyNmM3M2RjMWE4NDIwN2RkNmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3LTA0ICBBbGV4YW5kcmUgRWxp
YXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1vdmUgY29tcG9z
aXRvciBxdWFkcyB0byBQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtb3ZlcyBDQ1NoYXJlZFF1YWRTdGF0
ZSwgQ0NEcmF3UXVhZCwgYW5kIGFsbCBidXQgdHdvIENDKkRyYXdRdWFkCisgICAgICAgIGNsYXNz
ZXMgdG8gdGhlIFdlYktpdCBuYW1lc3BhY2UsIGFzIGEgZmlyc3Qgc3RlcCB0byBwdXNoaW5nIHRo
ZW0KKyAgICAgICAgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdW5kYXJ5IGZvciB0aGUgdWJlcmNvbXBv
c2l0b3IuCisKKyAgICAgICAgLSBUaGUgaW50ZW50IGlzIHRvIHNlcmlhbGl6ZSB0aGUgY2xhc3Mg
aGllcmFyY2h5IHVzaW5nIHRoZSBzYW1lCisgICAgICAgIG1lY2hhbmlzbSBhcyBXZWJJbnB1dEV2
ZW50LiAgSW4gb3JkZXIgdG8gZG8gdGhpcywgdGhlcmUgYXJlIHRocmVlCisgICAgICAgIHJlcXVp
cmVtZW50czogcHVyZSBQT0QgZGF0YSwgYSBtZXRob2QgcmV0dXJuaW5nIHNpemUsIGFuZCBhIHBh
Y2tpbmcKKyAgICAgICAgcHJhZ21hLgorCisgICAgICAgIC0gUHJpdmF0ZSBkYXRhIG1lbWJlcnMg
YXJlIGZpbmUgd2l0aCB0aGlzIGtpbmQgb2Ygc2VyaWFsaXplciwgYW5kIGEKKyAgICAgICAgZGVm
YXVsdCBjb25zdHJ1Y3RvciBpcyBub3QgbmVlZGVkLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBjYW4g
bWFpbnRhaW4KKyAgICAgICAgdGhlIHNhbWUgZW5jYXBzdWxhdGlvbiBhbmQgY29udmVuaWVudCBB
UElzIChiZWhpbmQKKyAgICAgICAgV0VCS0lUX0lNUExFTUVOVEFUSU9OKSBhcyB0aGUgb3JpZ2lu
YWwgY2xhc3Nlcy4gIFRvIGVhc2UgdGhlCisgICAgICAgIHRyYW5zaXRpb24sIHRoZSBvcmlnaW5h
bCBXZWJDb3JlIGhlYWRlcnMgc3RpbGwgZXhpc3QgYW5kIHR5cGVkZWYgdG8KKyAgICAgICAgdGhl
IG5ldyBjbGFzc2VzLgorCisgICAgICAgIC0gSG93ZXZlciwgU2hhcmVkUXVhZFN0YXRlIHdpbGwg
YmUgc2VyaWFsaXplZCB1c2luZyB0aGUgbm9ybWFsCisgICAgICAgIElQQ19TVFJVQ1RfVFJBSVRT
IG1hY3JvLCBzbyBJIG1hZGUgaXRzIG1lbWJlcnMgcHVibGljLiAgQSBjdXN0b20KKyAgICAgICAg
c2VyaWFsaXplciAob24gcXVhZCBsaXN0cykgd2lsbCBtYWludGFpbiB0aGUgcG9pbnRlcnMgZnJv
bSBxdWFkcyB0bworICAgICAgICBTaGFyZWRRdWFkU3RhdGVzLgorCisgICAgICAgIC0gSSBjb252
ZXJ0ZWQgdGhlIE1hdGVyaWFsIGNhc3RpbmcgbWVjaGFuaXNtIHRvIG1hdGVyaWFsQ2FzdCgpIG1l
dGhvZHMKKyAgICAgICAgbGl2aW5nIGluIHRoZSBkZXJpdmVkIGNsYXNzZXMuICBUaGF0IHdheSwg
dGhlIFdlYkNvbXBvc2l0b3JRdWFkIGhlYWRlcgorICAgICAgICBkb2Vzbid0IG5lZWQgdG8ga25v
dyBhYm91dCBhbGwgaXRzIGRlcml2ZWQgY2xhc3Nlcy4KKworICAgICAgICAtIFF1YWQgY2xhc3Nl
cyBub3QgeWV0IHRyYW5zaXRpb25lZCBjYW4gc3RpbGwgYmUgdXNlZCBpbgorICAgICAgICBub24t
dWJlcmNvbXBvc2l0b3IgbW9kZS4gIENDUmVuZGVyUGFzc0RyYXdRdWFkIGFuZCBDQ1lVVlZpZGVv
RHJhd1F1YWQKKyAgICAgICAgYXJlIGN1cnJlbnRseSBub24tUE9EIGFuZCBJIGxlZnQgdGhlbSBp
biB0aGVpciBvcmlnaW5hbCBmaWxlcy4KKworICAgICAgICBUaGlzIGFwcHJvYWNoIGlzIHRoZSBi
ZXN0IEkndmUgZm91bmQgc28gZmFyLCBzaW5jZSBpdCBwcmVzZXJ2ZXMgYWxsCisgICAgICAgIFdl
YkNvcmUtZmFjaW5nIEFQSXMgYW5kIGF2b2lkcyB1bm5lY2Vzc2FyeSBjb2RlIGR1cGxpY2F0aW9u
IChuZXcgcXVhZAorICAgICAgICB0eXBlcyBvciBtZW1iZXJzIGNhbiBiZSBhZGRlZCBieSBtb2Rp
Znlpbmcgb25seSBvbmUgcGxhY2UpLiAgVGhlcmUKKyAgICAgICAgYWxzbyBzaG91bGQgbm90IGJl
IGFuIHVucmVhc29uYWJsZSBhbW91bnQgb2YgY3VzdG9tIHNlcmlhbGl6ZXIgY29kZQorICAgICAg
ICByZXF1aXJlZC4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjp2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QpOgor
ICAgICAgICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAo
Q0NMYXllclRlc3RDb21tb246OlRFU1QpOgorCiAyMDEyLTA3LTExICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWluaW11bSBzaXplIHVz
ZWQgZm9yIG9jY2x1c2lvbiB0cmFja2luZyBzaG91bGQgYmUgYSBzZXR0aW5nIG9uIENDTGF5ZXJU
cmVlSG9zdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCBhNmIzNWZkOTM4ZThhMDg5MjdhNmNlMWNm
OTc0NGQ3MWU0YzRhNjMyLi40NjVkYzMxMmNkMTc0ZDVjZDdmZTMwNzA4MWVmNDBjMTdiNjM0MGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtNDMsNiArNDMsMTUgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJDb2xvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJv
YXJkUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckRl
YnVnQm9yZGVyUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9z
aXRvcklPU3VyZmFjZVF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JRdWFkLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNvbnRlbnRMYXllckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViQ29va2llLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3
ZTAyYmJmZmE0MzI2MjdmOTRmMjVlYzVlZGEyOTJmODk5ZDFiMjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9h
cmRRdWFkLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZF9o
CisKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yQ2hl
Y2tlcmJvYXJkUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CitwdWJsaWM6CisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRv
ckNoZWNrZXJib2FyZFF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworI2VuZGlmCisKKyAgICBzdGF0aWMgY29u
c3QgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJD
b21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworI2VuZGlmCit9OworCisjcHJh
Z21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmNmZDRiNjVjMGY5ZjBhNDYwNjhhZjYwODg2YWYxNjM0ODYyYTA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yRGVidWdCb3JkZXJRdWFkLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JEZWJ1Z0Jv
cmRlclF1YWRfaAorCisjaW5jbHVkZSAiU2tDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JRdWFkLmgiCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1
c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgOiBwdWJsaWMgV2Vi
Q29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IGNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgY29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2NvbG9yOyB9OworICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lkdGg7IH0KKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJR
dWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6Cisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVh
ZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgbV9jb2xv
cjsKKyAgICBpbnQgbV93aWR0aDsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ3ZWIxY2JkMDE0NDczMzQy
ODkxMDdiMjM2YWU5MWU0NGM1NGQyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZF9oCisjZGVm
aW5lIFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JRdWFkLmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xh
c3MgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQg
eworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOwor
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9p
b1N1cmZhY2VTaXplOyB9CisgICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pb1N1cmZhY2VUZXh0dXJlSWQ7IH0KKyNlbmRpZgorCisgICAgc3RhdGljIGNv
bnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29t
cG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBp
b1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOworI2VuZGlmCisKKyAg
ICBXZWJTaXplIG1faW9TdXJmYWNlU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZVRleHR1
cmVJZDsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTFhNzFmN2E2NTkyYmI1ZGUxOGJhYzJmMDdhYTJlNGQ4YWNmZTRiZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1
YWQuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclF1YWRf
aAorI2RlZmluZSBXZWJDb21wb3NpdG9yUXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIK
KyNpbmNsdWRlICJXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisvLyBXQVJOSU5HISBBbGwgV2ViQ29tcG9zaXRvclhZWlF1YWQgY2xhc3NlcyBt
dXN0IHJlbWFpbiBQT0RzIChwbGFpbiBvbGQgZGF0YSkuCisvLyBUaGV5IGFyZSBpbnRlbmRlZCB0
byBiZSAic2VyaWFsaXphYmxlIiBieSBjb3B5aW5nIHRoZWlyIHJhdyBieXRlcywgc28gdGhleQor
Ly8gbXVzdCBub3QgY29udGFpbiBhbnkgbm9uLWJpdC1jb3B5YWJsZSBtZW1iZXIgdmFyaWFibGVz
IQorLy8KKy8vIEZ1cnRoZXJtb3JlLCB0aGUgY2xhc3MgbWVtYmVycyBuZWVkIHRvIGJlIHBhY2tl
ZCBzbyB0aGV5IGFyZSBhbGlnbmVkCisvLyBwcm9wZXJseSBhbmQgZG9uJ3QgaGF2ZSBwYWRkaW5n
cy9nYXBzLCBvdGhlcndpc2UgbWVtb3J5IGNoZWNrIHRvb2xzCisvLyBsaWtlIFZhbGdyaW5kIHdp
bGwgY29tcGxhaW4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugd2hlbgorLy8gdHJh
bnNmZXJyaW5nIHRoZXNlIGNsYXNzZXMgb3ZlciB0aGUgd2lyZS4KKyNwcmFnbWEgcGFjayhwdXNo
LCA0KQorCisvLyBXZWJDb21wb3NpdG9yUXVhZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRy
YXdpbmcgYSBxdWFkLiBCZWNhdXNlIGRpZmZlcmVudAorLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVy
ZW50IGJpdHMgb2YgcGVyLXF1YWQgZGF0YSB0byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUK
Ky8vIGZyb20gV2ViQ29tcG9zaXRvclF1YWQgc3RvcmUgYWRkaXRpb25hbCBkYXRhIGluIHRoZWly
IGRlcml2ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlhbAorLy8gZW51bSBpcyB1c2VkIHRvICJzYWZl
bHkiIGRvd25jYXN0IHRvIHRoZSBkZXJpdmVkIGNsYXNzLgorY2xhc3MgV2ViQ29tcG9zaXRvclF1
YWQgeworcHVibGljOgorICAgIGVudW0gTWF0ZXJpYWwgeworICAgICAgICBJbnZhbGlkLAorICAg
ICAgICBDaGVja2VyYm9hcmQsCisgICAgICAgIERlYnVnQm9yZGVyLAorICAgICAgICBJT1N1cmZh
Y2VDb250ZW50LAorICAgICAgICBSZW5kZXJQYXNzLAorICAgICAgICBUZXh0dXJlQ29udGVudCwK
KyAgICAgICAgU29saWRDb2xvciwKKyAgICAgICAgVGlsZWRDb250ZW50LAorICAgICAgICBZVVZW
aWRlb0NvbnRlbnQsCisgICAgICAgIFN0cmVhbVZpZGVvQ29udGVudCwKKyAgICB9OworCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcXVhZFJlY3Q7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5x
dWFkVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVy
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyVHJhbnNm
b3JtOyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBsYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJSZWN0OyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBzY2lz
c29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5zY2lzc29yUmVjdDsg
fQorICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
b3BhY2l0eTsgfQorICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgYmxlbmRpbmcsIHdoYXQgcGFy
dCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgV2ViQ29yZTo6
SW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3Q7CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8ICFvcGFxdWVSZWN0KCkuY29udGFpbnMobV9x
dWFkVmlzaWJsZVJlY3QpOyB9CisgICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJl
Y3QoKTsgfQorCisgICAgLy8gQWxsb3dzIGNoYW5naW5nIHRoZSByZWN0IHRoYXQgZ2V0cyBkcmF3
biB0byBtYWtlIGl0IHNtYWxsZXIuIFBhcmFtZXRlciBwYXNzZWQKKyAgICAvLyBpbiB3aWxsIGJl
IGNsaXBwZWQgdG8gcXVhZFJlY3QoKS4KKyAgICB2b2lkIHNldFF1YWRWaXNpYmxlUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkVmlzaWJsZVJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRWaXNpYmxlUmVjdDsgfQorICAgIGJvb2wgaXNEZWJ1
Z1F1YWQoKSBjb25zdCB7IHJldHVybiBtX21hdGVyaWFsID09IERlYnVnQm9yZGVyOyB9CisjZW5k
aWYKKworICAgIE1hdGVyaWFsIG1hdGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsg
fQorCisgICAgLy8gUmV0dXJucyB0cmFuc2ZlciBzaXplIG9mIHRoaXMgb2JqZWN0IGJhc2VkIG9u
IHRoZSBkZXJpdmVkIGNsYXNzIChieQorICAgIC8vIGxvb2tpbmcgYXQgdGhlIG1hdGVyaWFsIHR5
cGUpLgorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKKworICAgIGNvbnN0IFdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cmVkUXVhZFN0YXRlOyB9CisgICAgdm9pZCBzZXRTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSB7IG1fc2hhcmVkUXVhZFN0
YXRlID0gc2hhcmVkUXVhZFN0YXRlOyB9CisKK3Byb3RlY3RlZDoKKyNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiwgTWF0ZXJpYWwsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyNlbmRpZgor
CisgICAgLy8gU3RvcmVzIHN0YXRlIGNvbW1vbiB0byBhIGxhcmdlIGJ1bmRsZSBvZiBxdWFkczsg
a2VwdCBzZXBhcmF0ZSBmb3IgbWVtb3J5CisgICAgLy8gZWZmaWNpZW5jeS4gVGhlcmUgaXMgc3Bl
Y2lhbCB0cmVhdG1lbnQgdG8gcmVjb25zdHJ1Y3QgdGhlc2UgcG9pbnRlcnMKKyAgICAvLyBkdXJp
bmcgc2VyaWFsaXphdGlvbi4KKyAgICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBtX3NoYXJlZFF1YWRTdGF0ZTsKKworICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7CisgICAgV2Vi
UmVjdCBtX3F1YWRSZWN0OworICAgIFdlYlJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisKKyAgICAv
LyBCeSBkZWZhdWx0LCB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9y
IG5vdCB0aGlzIHF1YWQgaXMKKyAgICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2
ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgd2l0aCB0aGVzZQorICAgIC8vIHZhcmlhYmxlcy4KKyAg
ICBib29sIG1fcXVhZE9wYXF1ZTsKKyAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKKworICAgIC8v
IEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFy
ZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQg
dGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUu
CisgICAgV2ViUmVjdCBtX29wYXF1ZVJlY3Q7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDFmMGUy
Y2VjNDFlZjE5Nzg5YzBmYzJlZjVkZmRmM2FmZWNmYmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZV9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGVfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorI2luY2x1
ZGUgIldlYlJlY3QuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSB7
CitwdWJsaWM6CisgICAgLy8gVGhlIHRyYW5zZm9ybSB0aGF0IFdlYkNvbXBvc2l0b3JRdWFkcyBz
aG91bGQgYmUgdHJhbnNmb3JtZWQgd2l0aC4KKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBx
dWFkVHJhbnNmb3JtOworICAgIC8vIFRoZSB0cmFuc2Zvcm0gdGhhdCBsYXllclJlY3Qgc2hvdWxk
IGJlIHRyYW5zZm9ybWVkIHdpdGguCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJU
cmFuc2Zvcm07CisgICAgV2ViUmVjdCBsYXllclJlY3Q7CisgICAgV2ViUmVjdCBzY2lzc29yUmVj
dDsKKyAgICBmbG9hdCBvcGFjaXR5OworICAgIGJvb2wgb3BhcXVlOworCisgICAgV2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSgpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
c3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9w
YWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9w
YWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3Qo
KSBjb25zdDsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYzMTIxMGUzNTIwZTg3Yzg3OWE2ZTY0M2I5OWE2NTBlNTU5YjBlY2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZF9oCisKKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9z
aXRvclF1YWQuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2so
cHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkIDogcHVibGljIFdl
YkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ+IGNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFNrQ29sb3IpOworI2VuZGlmCisKKyAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xvcjsgfTsKKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yU29saWRDb2xv
clF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBTa0NvbG9yKTsKKyNlbmRpZgorCisgICAgU2tDb2xvciBtX2NvbG9yOworfTsKKwor
I3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFk
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzZhM2NlYWI0YjZjMzNmMTNkNTM5Y2JmZmRiYWY4MTExMWZhMzU4ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU3Ry
ZWFtVmlkZW9RdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JT
dHJlYW1WaWRlb1F1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgdGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KKworICAg
IHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKiBtYXRlcmlhbENhc3Qo
Y29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisgICAgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZChjb25zdCBXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRl
eHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyNlbmRpZgorCisgICAg
dW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRy
aXg7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWJlNmZkM2U2ZDMxODI2ZjI1MTJhODAyNjM3Mjc5ZjQzMjcyNjA2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkX2gKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2VuZGlmCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
clF1YWQuaCIKKyNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBs
aWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQp
OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVj
dDsgfQorI2VuZGlmCisKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVJZDsgfQorICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1
cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGlwcGVkOyB9CisKKyAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKKworICAg
IHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25z
dCBXZWJDb21wb3NpdG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHRl
eHR1cmVfaWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKKyNlbmRpZgorCisgICAgdW5zaWduZWQgbV90ZXh0
dXJlSWQ7CisgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBXZWJGbG9hdFJlY3Qg
bV91dlJlY3Q7CisgICAgYm9vbCBtX2ZsaXBwZWQ7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhMjU1YmIyNWRhMzc4YmJh
ZjQ1OTk2NWU2MjJkNDIzZTI5Nzg2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclRpbGVRdWFkX2gKKyNkZWZpbmUgV2ViQ29t
cG9zaXRvclRpbGVRdWFkX2gKKworI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1
ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCisjaW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRl
ICJXZWJTaXplLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yVGls
ZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVh
ZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVj
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBi
b29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworCisg
ICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJ
ZDsgfQorICAgIFdlYkNvcmU6OkludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVPZmZzZXQ7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHRleHR1cmVTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQorICAgIEdDM0RpbnQgdGV4dHVyZUZpbHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUZpbHRlcjsgfQorICAgIGJvb2wgc3dpenpsZUNv
bnRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zd2l6emxlQ29udGVudHM7IH0KKworICAgIGJvb2wg
bGVmdEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdEVkZ2VBQTsgfQorICAgIGJvb2wgdG9w
RWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV90b3BFZGdlQUE7IH0KKyAgICBib29sIHJpZ2h0RWRn
ZUFBKCkgY29uc3QgeyByZXR1cm4gbV9yaWdodEVkZ2VBQTsgfQorICAgIGJvb2wgYm90dG9tRWRn
ZUFBKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21FZGdlQUE7IH0KKworICAgIGJvb2wgaXNBbnRp
YWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCBy
aWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgpOyB9CisjZW5kaWYKKworICAgIHN0YXRpYyBj
b25zdCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3Np
dG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICAgV2Vi
Q29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
b3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOworI2VuZGlmCisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOworICAgIFdl
YlBvaW50IG1fdGV4dHVyZU9mZnNldDsKKyAgICBXZWJTaXplIG1fdGV4dHVyZVNpemU7CisgICAg
R0MzRGludCBtX3RleHR1cmVGaWx0ZXI7CisgICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsKKyAg
ICBib29sIG1fbGVmdEVkZ2VBQTsKKyAgICBib29sIG1fdG9wRWRnZUFBOworICAgIGJvb2wgbV9y
aWdodEVkZ2VBQTsKKyAgICBib29sIG1fYm90dG9tRWRnZUFBOworfTsKKworI3ByYWdtYSBwYWNr
KHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3MmY3NGUyNDZhODczZTgy
NjkxMTkzNWI2ODBmNTJjMzBmOTFmM2FmLi5lMzhiZTkyYWQyOTRhOTIxOTVjZDY3MjI1NjczYmEw
ZjMxYTMyZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MTkxLDYgKzgxOTEsMTUgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQXVkaW9CdXMuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvclF1YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclN0
cmVhbVZpZGVvUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkRhdGEuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKQEAgLTgyODMs
MTcgKzgyOTIsMTQgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FuaW1hdGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RhbWFnZVRyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdSZWN0SGlzdG9yeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxh
cy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRm9u
dEF0bGFzLmgnLApAQCAtODMwNCw3ICs4MzEwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURy
YXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJT1N1cmZhY2VEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLApAQCAtODM2
OCwxOSArODM3MywxNSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZURyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oJywKQEAgLTgzOTAsNyArODM5MSw2IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRUYXNrLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZURyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JDaGVja2VyYm9hcmRRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3
MGRiMmI4NDI1YmJkZjMwOTQxOGQ5YjA5NzI4Zjk2ZWU4YmI5YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFk
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UGFzc093blB0cjxXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZD4gV2ViQ29tcG9zaXRvckNo
ZWNrZXJib2FyZFF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCkpOworfQorCitXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6V2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAgICA6IFdl
YkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OkNoZWNr
ZXJib2FyZCwgcXVhZFJlY3QpCit7Cit9CisKK2NvbnN0IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9h
cmRRdWFkKiBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0
IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgp
ID09IFdlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCo+KHF1YWQpOworfQorCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE3OWY2YzE0ZmVhNzhhYzk3MjMxNDIyY2UzNDY3ZDI5YzQ2MGZkZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9y
ZGVyUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZD4gV2ViQ29tcG9z
aXRvckRlYnVnQm9yZGVyUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3Ig
Y29sb3IsIGludCB3aWR0aCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0
b3JEZWJ1Z0JvcmRlclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgY29sb3IsIHdpZHRo
KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ6OldlYkNvbXBvc2l0b3JEZWJ1
Z0JvcmRlclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvciwgaW50IHdpZHRo
KQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9y
UXVhZDo6RGVidWdCb3JkZXIsIHF1YWRSZWN0KQorICAgICwgbV9jb2xvcihjb2xvcikKKyAgICAs
IG1fd2lkdGgod2lkdGgpCit7CisgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7CisgICAgaWYgKFNr
Q29sb3JHZXRBKG1fY29sb3IpIDwgMjU1KQorICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVl
OworfQorCitjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKiBXZWJDb21wb3NpdG9y
RGVidWdCb3JkZXJRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1
YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6
OkRlYnVnQm9yZGVyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRv
ckRlYnVnQm9yZGVyUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvcklPU3VyZmFjZVF1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYTI5MzE0ZGFkZGY5OGQxYzg4OTUx
MDMxZmJlMWFlOTE4MGM4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxXZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZD4gV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZh
Y2VUZXh0dXJlSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBpb1N1cmZhY2VTaXplLCBpb1N1
cmZhY2VUZXh0dXJlSWQpKTsKK30KKworV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6OldlYkNv
bXBvc2l0b3JJT1N1cmZhY2VRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKKyAgICA6IFdlYkNv
bXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OklPU3VyZmFj
ZUNvbnRlbnQsIHF1YWRSZWN0KQorICAgICwgbV9pb1N1cmZhY2VTaXplKGlvU3VyZmFjZVNpemUp
CisgICAgLCBtX2lvU3VyZmFjZVRleHR1cmVJZChpb1N1cmZhY2VUZXh0dXJlSWQpCit7Cit9CisK
K2NvbnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKiBXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAg
IEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VD
b250ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvcklPU3Vy
ZmFjZVF1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YTAyY2EwZWFmYzNmYTE3YmY4ODgzODczYjk4MGY0MGFkZmEzMGM2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9yUXVhZC5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaD4KKworI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1
YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVR
dWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQ29tcG9zaXRvclF1YWQ6OldlYkNvbXBvc2l0b3JRdWFkKGNvbnN0IFdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgTWF0ZXJpYWwgbWF0ZXJpYWwsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0KQorICAgIDogbV9zaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVh
ZFN0YXRlKQorICAgICwgbV9tYXRlcmlhbChtYXRlcmlhbCkKKyAgICAsIG1fcXVhZFJlY3QocXVh
ZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxlUmVjdChxdWFkUmVjdCkKKyAgICAsIG1fcXVhZE9w
YXF1ZSh0cnVlKQorICAgICwgbV9uZWVkc0JsZW5kaW5nKGZhbHNlKQoreworICAgIEFTU0VSVCht
X3NoYXJlZFF1YWRTdGF0ZSk7CisgICAgQVNTRVJUKG1fbWF0ZXJpYWwgIT0gSW52YWxpZCk7Cit9
CisKK0ludFJlY3QgV2ViQ29tcG9zaXRvclF1YWQ6Om9wYXF1ZVJlY3QoKSBjb25zdAoreworICAg
IGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICBpZiAo
bV9zaGFyZWRRdWFkU3RhdGUtPm9wYXF1ZSAmJiBtX3F1YWRPcGFxdWUpCisgICAgICAgIHJldHVy
biBtX3F1YWRSZWN0OworICAgIHJldHVybiBtX29wYXF1ZVJlY3Q7Cit9CisKK3ZvaWQgV2ViQ29t
cG9zaXRvclF1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJs
ZVJlY3QpCit7CisgICAgSW50UmVjdCBpbnRlcnNlY3Rpb24gPSBxdWFkVmlzaWJsZVJlY3Q7Cisg
ICAgaW50ZXJzZWN0aW9uLmludGVyc2VjdChtX3F1YWRSZWN0KTsKKyAgICBtX3F1YWRWaXNpYmxl
UmVjdCA9IGludGVyc2VjdGlvbjsKK30KKwordW5zaWduZWQgV2ViQ29tcG9zaXRvclF1YWQ6OnNp
emUoKSBjb25zdAoreworICAgIHN3aXRjaCAobWF0ZXJpYWwoKSkgeworICAgIGNhc2UgQ2hlY2tl
cmJvYXJkOgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRR
dWFkKTsKKyAgICBjYXNlIERlYnVnQm9yZGVyOgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQpOworICAgIGNhc2UgSU9TdXJmYWNlQ29udGVudDoKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCk7CisgICAgY2Fz
ZSBUZXh0dXJlQ29udGVudDoKKyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOworICAgIGNhc2UgU29saWRDb2xvcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihX
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQpOworICAgIGNhc2UgVGlsZWRDb250ZW50OgorICAg
ICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JUaWxlUXVhZCk7CisgICAgY2FzZSBTdHJl
YW1WaWRlb0NvbnRlbnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvclN0cmVh
bVZpZGVvUXVhZCk7CisgICAgY2FzZSBJbnZhbGlkOgorICAgIGNhc2UgUmVuZGVyUGFzczoKKyAg
ICBjYXNlIFlVVlZpZGVvQ29udGVudDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQ1JB
U0goKTsKKyAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JRdWFkKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDRlZWY4NmNlNGU2NzQyZmZjY2VkNTc2ODA3MTEzYmViMGUxNzIwNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
Lmg+CisKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgi
CisKK3VzaW5nIFdlYkNvcmU6OkZsb2F0UXVhZDsKK3VzaW5nIFdlYkNvcmU6OkludFJlY3Q7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjpXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKCkKKyAgICA6IG9wYWNpdHkoMCkKKyAgICAsIG9wYXF1
ZShvcGFxdWUpCit7Cit9CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZT4gV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVj
dCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3Jt
LCBsYXllclRyYW5zZm9ybSwgbGF5ZXJSZWN0LCBzY2lzc29yUmVjdCwgb3BhY2l0eSwgb3BhcXVl
KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpCisgICAgOiBxdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCisgICAg
LCBsYXllclRyYW5zZm9ybShsYXllclRyYW5zZm9ybSkKKyAgICAsIGxheWVyUmVjdChsYXllclJl
Y3QpCisgICAgLCBzY2lzc29yUmVjdChzY2lzc29yUmVjdCkKKyAgICAsIG9wYWNpdHkob3BhY2l0
eSkKKyAgICAsIG9wYXF1ZShvcGFxdWUpCit7Cit9CisKK2Jvb2wgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0Cit7CisgICAgLy8g
Tm90ZTogdGhpcyBkb2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0aW9uIG1hdHJpY2Vz
LgorICAgIC8vIEFzc3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5kIGhhdmUgaW50ZWdl
ciBzY2FsZXMgYW5kIHRyYW5zbGF0aW9ucy4KKyAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKKyAg
ICBGbG9hdFF1YWQgcXVhZCA9IFdlYkNvcmU6OkNDTWF0aFV0aWw6Om1hcFF1YWQocXVhZFRyYW5z
Zm9ybSwgRmxvYXRRdWFkKEludFJlY3QobGF5ZXJSZWN0KSksIGNsaXBwZWQpOworICAgIHJldHVy
biAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94KCku
aXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgyNDU4YzcyMjY1MGYwYWQyOGVl
OWRhNTE1N2M0ODI1NzY0YWM1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcApA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRv
clNvbGlkQ29sb3JRdWFkPiBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZShjb25z
dCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgY29sb3IpKTsKK30KKworV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0Nv
bG9yIGNvbG9yKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJD
b21wb3NpdG9yUXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9y
KQoreworICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkKKyAgICAgICAgbV9xdWFk
T3BhcXVlID0gZmFsc2U7CisgICAgZWxzZQorICAgICAgICBtX29wYXF1ZVJlY3QgPSBxdWFkUmVj
dDsKK30KKworY29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKiBXZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVh
ZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6
U29saWRDb2xvcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JT
b2xpZENvbG9yUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3Np
dG9yU3RyZWFtVmlkZW9RdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTI1N2FhZjdlMzQxZGVjNDg0N2Uw
MzFmZGUwMDBkMjNmNjFjYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmNwcApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQ+IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ6OmNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJ
ZCwgbWF0cml4KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ6OldlYkNvbXBv
c2l0b3JTdHJlYW1WaWRlb1F1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVy
ZUlkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorICAgIDogV2ViQ29t
cG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFtVmlk
ZW9Db250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAs
IG1fbWF0cml4KG1hdHJpeCkKK3sKK30KKworY29uc3QgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVv
UXVhZCogV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdl
YkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09
IFdlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKj4ocXVhZCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NWY0NWZkYzRjYjJhNThmNzI4N2Y1ZmFjNWRjNTZiZGQyMzA0MDdiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0
cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBl
ZCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwg
dXZSZWN0LCBmbGlwcGVkKSk7Cit9CisKK1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQg
dGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1f
dGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRp
cGxpZWRBbHBoYSkKKyAgICAsIG1fdXZSZWN0KHV2UmVjdCkKKyAgICAsIG1fZmxpcHBlZChmbGlw
cGVkKQoreworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6c2V0TmVlZHNCbGVu
ZGluZygpCit7CisgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKK30KKworY29uc3QgV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkKiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1hdGVyaWFsQ2Fz
dChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChx
dWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCo+KHF1
YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjdhYTc3NTA4MTc0MWIxMTQxOWI4MTE3Njg3YTk5NmFmOTJkMWNlYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvclRpbGVRdWFkLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8
V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZShjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNp
emUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRl
bnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBi
b29sIGJvdHRvbUVkZ2VBQSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0
b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJl
SWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29u
dGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkp
OworfQorCitXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNp
emUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRl
bnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBi
b29sIGJvdHRvbUVkZ2VBQSkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX3Rl
eHR1cmVJZCh0ZXh0dXJlSWQpCisgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkK
KyAgICAsIG1fdGV4dHVyZVNpemUodGV4dHVyZVNpemUpCisgICAgLCBtX3RleHR1cmVGaWx0ZXIo
dGV4dHVyZUZpbHRlcikKKyAgICAsIG1fc3dpenpsZUNvbnRlbnRzKHN3aXp6bGVDb250ZW50cykK
KyAgICAsIG1fbGVmdEVkZ2VBQShsZWZ0RWRnZUFBKQorICAgICwgbV90b3BFZGdlQUEodG9wRWRn
ZUFBKQorICAgICwgbV9yaWdodEVkZ2VBQShyaWdodEVkZ2VBQSkKKyAgICAsIG1fYm90dG9tRWRn
ZUFBKGJvdHRvbUVkZ2VBQSkKK3sKKyAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQorICAgICAgICBt
X25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7Cit9
CisKK2NvbnN0IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCogV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpt
YXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7CisgICAgQVNTRVJU
KHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCo+KHF1YWQp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWI1
OTI5YTM0NjkxN2E1ZTZjNDExYTUwYTAxYTkyZGZmZGVkNzg0Li5hZWE2YmI1N2IxYmZlMGMyYzBh
OTRkNzZiMWJmNjI4OTFmOTY4NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTQ3LDI0ICs0NywxNSBAQAogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxv
YWRlci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCi0j
aW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFkLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9D
Q1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3Bl
ZFRleHR1cmUuaCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1
YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViVmlkZW9GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpA
QCAtNDE0LDcgKzQwNSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVy
UGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0CiAgICAgICAgIGRyYXdR
dWFkKGl0LT5nZXQoKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVh
ZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCiB7CiAgICAgSW50
UmVjdCBzY2lzc29yUmVjdCA9IHF1YWQtPnNjaXNzb3JSZWN0KCk7CiAKQEAgLTQzMCwzNSArNDIx
LDM1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdR
dWFkKiBxdWFkKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAgICBzd2l0Y2ggKHF1YWQtPm1hdGVyaWFsKCkp
IHsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkludmFsaWQ6CisgICAgY2FzZSBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQ6Ci0gICAgICAg
IGRyYXdDaGVja2VyYm9hcmRRdWFkKHF1YWQtPnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSk7Cisg
ICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQ6CisgICAgICAg
IGRyYXdDaGVja2VyYm9hcmRRdWFkKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2Fz
dChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6RGVidWdCb3Jk
ZXI6Ci0gICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQocXVhZC0+dG9EZWJ1Z0JvcmRlckRyYXdR
dWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXI6
CisgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRl
cmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OklP
U3VyZmFjZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdJT1N1cmZhY2VRdWFkKHF1YWQtPnRvSU9TdXJm
YWNlRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJT1N1
cmZhY2VDb250ZW50OgorICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChDQ0lPU3VyZmFjZURyYXdR
dWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJh
d1F1YWQ6OlJlbmRlclBhc3M6Ci0gICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChxdWFkLT50b1Jl
bmRlclBhc3NEcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6
OlJlbmRlclBhc3M6CisgICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0Ry
YXdRdWFkOjpTb2xpZENvbG9yOgotICAgICAgICBkcmF3U29saWRDb2xvclF1YWQocXVhZC0+dG9T
b2xpZENvbG9yRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFk
OjpTb2xpZENvbG9yOgorICAgICAgICBkcmF3U29saWRDb2xvclF1YWQoV2ViS2l0OjpXZWJDb21w
b3NpdG9yU29saWRDb2xvclF1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6U3RyZWFtVmlkZW9Db250ZW50OgotICAgICAgICBkcmF3
U3RyZWFtVmlkZW9RdWFkKHF1YWQtPnRvU3RyZWFtVmlkZW9EcmF3UXVhZCgpKTsKKyAgICBjYXNl
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVhbVZpZGVvQ29udGVudDoKKyAgICAgICAg
ZHJhd1N0cmVhbVZpZGVvUXVhZChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChx
dWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6VGV4dHVyZUNvbnRl
bnQ6Ci0gICAgICAgIGRyYXdUZXh0dXJlUXVhZChxdWFkLT50b1RleHR1cmVEcmF3UXVhZCgpKTsK
KyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50OgorICAg
ICAgICBkcmF3VGV4dHVyZVF1YWQoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1h
dGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50OgotICAgICAgICBkcmF3VGlsZVF1YWQocXVhZC0+dG9UaWxlRHJhd1F1YWQo
KSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUaWxlZENvbnRlbnQ6Cisg
ICAgICAgIGRyYXdUaWxlUXVhZChDQ1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpZVVZWaWRlb0NvbnRlbnQ6Ci0g
ICAgICAgIGRyYXdZVVZWaWRlb1F1YWQocXVhZC0+dG9ZVVZWaWRlb0RyYXdRdWFkKCkpOworICAg
IGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250ZW50OgorICAgICAg
ICBkcmF3WVVWVmlkZW9RdWFkKENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAppbmRleCA2YWZlNjY4MDZjZTk4MWY0YjNlMDA4ZTc5ODY2NmE1MmEwOWRkOWFiLi40MTU1
MjBkN2ZkOWU5MzgxZTY1ZTUwM2ZhOWI3M2ZiNWY5ZDk4Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsMTYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNpbmNsdWRlICJUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAi
Y2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgorI2luY2x1ZGUgImNjL0NDU29saWRD
b2xvckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCisj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3
UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDYsMTcgKzU1LDcgQEAg
Y2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsK
LWNsYXNzIENDRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ7CiBjbGFzcyBDQ1Njb3BlZFRleHR1cmU7Ci1jbGFzcyBDQ1NvbGlk
Q29sb3JEcmF3UXVhZDsKLWNsYXNzIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKLWNsYXNzIENDVGV4
dHVyZURyYXdRdWFkOwotY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1lVVlZpZGVvRHJh
d1F1YWQ7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7CiBjbGFzcyBTY29wZWRFbnN1cmVGcmFtZWJ1
ZmZlckFsbG9jYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZTAzMzUxNGE2ODQ2YWI5ZjRj
YjFmY2IxYjk2MTU4ZmYyZDAyM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NDaGVj
a2VyYm9hcmREcmF3UXVhZD4gQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDaGVja2VyYm9hcmREcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0KSk7Ci19Ci0KLUNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OkND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCi0gICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkKLXsKLX0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCmluZGV4IDI3ZjhjNTZiZDQ5
YzQ1ZTMwNTVhM2ZhN2NiNmU3YTcyNWU1ZjQzZjEuLjM1MTA0ZGNmNWIzYzdlOWYyZjg1NWI1ZjIy
MDVhNjFjMWI2YjljN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFk
LmgKQEAgLTI2LDIwICsyNiwxMCBAQAogI2lmbmRlZiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gK
ICNkZWZpbmUgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdR
dWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOwotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKLQotcHJpdmF0ZToKLSAgICBDQ0No
ZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYpOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFk
IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVidWdCb3JkZXJEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1
MjdjNDdjNTU3NmY5NmFjN2YzOTk5Y2MwN2ExZDUwZDEzZmI2N2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Q
YXNzT3duUHRyPENDRGVidWdCb3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDRGVidWdCb3JkZXJEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBjb2xvciwgd2lkdGgpKTsKLX0KLQotQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLSAgICA6
IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRlciwgcXVh
ZFJlY3QpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV93aWR0aCh3aWR0aCkKLXsKLSAg
ICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAy
NTUpCi0gICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3Jk
ZXJEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKaW5kZXggZWExY2Y4NDc2MDQxZDFiMTcyZTZjMDI2
YzdmNzg2MjgxYWNlNDRmNC4uYTcyYzI3NDE3NmEwNmEzNjQyZjIxNjgwY2E1NDcyNTBhMjJhMWE2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjcgKzI2LDEwIEBA
CiAjaWZuZGVmIENDRGVidWdCb3JkZXJEcmF3UXVhZF9oCiAjZGVmaW5lIENDRGVidWdCb3JkZXJE
cmF3UXVhZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVh
ZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNv
bXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwotCi0gICAg
U2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0gICAgaW50IHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotCi1wcml2YXRlOgotICAgIENDRGVidWdCb3Jk
ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0Nv
bG9yLCBpbnQgd2lkdGgpOwotCi0gICAgU2tDb2xvciBtX2NvbG9yOwotICAgIGludCBtX3dpZHRo
OwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY1NjIxZGI1MzZkZGE1Zjk1ZjI1YjAzYjcy
YzFmMmI5ZjYxODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLQotI2luY2x1ZGUgImNjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1
YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5oIgotI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgotI2luY2x1ZGUgImNj
L0NDVGV4dHVyZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLSNp
bmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1DQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKLSAg
ICA6IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKLSAgICAsIG1fbWF0ZXJpYWwo
bWF0ZXJpYWwpCi0gICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQotICAgICwgbV9xdWFkVmlzaWJs
ZVJlY3QocXVhZFJlY3QpCi0gICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKLSAgICAsIG1fbmVlZHNC
bGVuZGluZyhmYWxzZSkKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOwotICAgIEFT
U0VSVChtX21hdGVyaWFsICE9IEludmFsaWQpOwotfQotCi1JbnRSZWN0IENDRHJhd1F1YWQ6Om9w
YXF1ZVJlY3QoKSBjb25zdAotewotICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKLSAgICAgICAgcmV0
dXJuIEludFJlY3QoKTsKLSAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYg
bV9xdWFkT3BhcXVlKQotICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKLSAgICByZXR1cm4gbV9v
cGFxdWVSZWN0OwotfQotCi12b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25z
dCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCi17Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBx
dWFkVmlzaWJsZVJlY3Q7Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fcXVhZFJl
Y3QpOwotfQotCi1jb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0No
ZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBD
aGVja2VyYm9hcmQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogQ0NE
cmF3UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9t
YXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEND
RGVidWdCb3JkZXJEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ0lPU3VyZmFjZURyYXdR
dWFkKiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFjZURyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9tYXRlcmlhbCA9PSBJT1N1cmZhY2VDb250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1JlbmRl
clBhc3NEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdAot
ewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclBhc3MpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBD
Q1NvbGlkQ29sb3JEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBj
b25zdAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFNvbGlkQ29sb3IpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1j
b25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU3RyZWFtVmlkZW9EcmF3
UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gU3RyZWFtVmlkZW9Db250
ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
Kj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1Rl
eHR1cmVEcmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVGV4dHVy
ZUNvbnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RleHR1cmVEcmF3UXVh
ZCo+KHRoaXMpOwotfQotY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURy
YXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBUaWxlZENvbnRlbnQp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RpbGVEcmF3UXVhZCo+KHRoaXMpOwot
fQotCi1jb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvWVVWVmlkZW9EcmF3
UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gWVVWVmlkZW9Db250ZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKj4odGhp
cyk7Ci19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDc1NmI2ODAzNmRkNjYzNzdlNDUx
ZDJlMTcyMGE4YWE3NGE4ZjEwZTAuLjVmNTM2YTg1YTQwNTZmMDZiYTgwNDdhYWM0ZjdjZjNiYTFj
OTc5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOTEgKzI2LDEwIEBACiAjaWZuZGVmIENDRHJhd1F1
YWRfaAogI2RlZmluZSBDQ0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0
YXRlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNsYXNzIENDRGVi
dWdCb3JkZXJEcmF3UXVhZDsKLWNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1Jl
bmRlclBhc3NEcmF3UXVhZDsKLWNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwotY2xhc3MgQ0NT
dHJlYW1WaWRlb0RyYXdRdWFkOwotY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1Rp
bGVEcmF3UXVhZDsKLWNsYXNzIENDWVVWVmlkZW9EcmF3UXVhZDsKLQotLy8gQ0NEcmF3UXVhZCBp
cyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRyYXdpbmcgYSBxdWFkLiBCZWNhdXNlIGRpZmZlcmVu
dAotLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVyZW50IGJpdHMgb2YgcGVyLXF1YWQgZGF0YSB0byBy
ZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUKLS8vIGZyb20gQ0NEcmF3UXVhZCBzdG9yZSBhZGRp
dGlvbmFsIGRhdGEgaW4gdGhlaXIgZGVyaXZlZCBpbnN0YW5jZS4gVGhlIE1hdGVyaWFsCi0vLyBl
bnVtIGlzIHVzZWQgdG8gInNhZmVseSIgdXBjYXN0IHRvIHRoZSBkZXJpdmVkIGNsYXNzLgotY2xh
c3MgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEcmF3UXVhZCk7Ci1w
dWJsaWM6Ci0gICAgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3F1
YWRSZWN0OyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVh
ZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNm
b3JtKCk7IH0KLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXll
clRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclRyYW5z
Zm9ybSgpOyB9Ci0gICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVjdCgpOyB9Ci0gICAgY29uc3QgSW50UmVjdCYgc2Np
c3NvclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+c2Npc3NvclJlY3Qo
KTsgfQotICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0
ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBibGVuZGluZywgd2hh
dCBwYXJ0IG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJlIG9wYXF1ZT8KLSAgICBJbnRS
ZWN0IG9wYXF1ZVJlY3QoKSBjb25zdDsKLSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7
IHJldHVybiBtX25lZWRzQmxlbmRpbmcgfHwgIW9wYXF1ZVJlY3QoKS5jb250YWlucyhtX3F1YWRW
aXNpYmxlUmVjdCk7IH0KLSAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgp
OyB9Ci0KLSAgICAvLyBBbGxvd3MgY2hhbmdpbmcgdGhlIHJlY3QgdGhhdCBnZXRzIGRyYXduIHRv
IG1ha2UgaXQgc21hbGxlci4gUGFyYW1ldGVyIHBhc3NlZAotICAgIC8vIGluIHdpbGwgYmUgY2xp
cHBlZCB0byBxdWFkUmVjdCgpLgotICAgIHZvaWQgc2V0UXVhZFZpc2libGVSZWN0KGNvbnN0IElu
dFJlY3QmKTsKLSAgICBjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3F1YWRWaXNpYmxlUmVjdDsgfQotCi0gICAgZW51bSBNYXRlcmlhbCB7Ci0gICAgICAg
IEludmFsaWQsCi0gICAgICAgIENoZWNrZXJib2FyZCwKLSAgICAgICAgRGVidWdCb3JkZXIsCi0g
ICAgICAgIElPU3VyZmFjZUNvbnRlbnQsCi0gICAgICAgIFJlbmRlclBhc3MsCi0gICAgICAgIFRl
eHR1cmVDb250ZW50LAotICAgICAgICBTb2xpZENvbG9yLAotICAgICAgICBUaWxlZENvbnRlbnQs
Ci0gICAgICAgIFlVVlZpZGVvQ29udGVudCwKLSAgICAgICAgU3RyZWFtVmlkZW9Db250ZW50LAot
ICAgIH07Ci0KLSAgICBNYXRlcmlhbCBtYXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJp
YWw7IH0KLSAgICBib29sIGlzRGVidWdRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbCA9
PSBEZWJ1Z0JvcmRlcjsgfQotCi0gICAgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9D
aGVja2VyYm9hcmREcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3
UXVhZCogdG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NJT1N1cmZh
Y2VEcmF3UXVhZCogdG9JT1N1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiB0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0
IENDU29saWRDb2xvckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwotICAg
IGNvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCogdG9TdHJlYW1WaWRlb0RyYXdRdWFkKCkgY29u
c3Q7Ci0gICAgY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHRvVGV4dHVyZURyYXdRdWFkKCkgY29u
c3Q7Ci0gICAgY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHRvVGlsZURyYXdRdWFkKCkgY29uc3Q7Ci0g
ICAgY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiB0b1lVVlZpZGVvRHJhd1F1YWQoKSBjb25zdDsK
LQotICAgIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgQ0NEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBjb25zdCBJbnRSZWN0Jik7Ci0K
LSAgICBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogbV9zaGFyZWRRdWFkU3RhdGU7Ci0KLSAgICBN
YXRlcmlhbCBtX21hdGVyaWFsOwotICAgIEludFJlY3QgbV9xdWFkUmVjdDsKLSAgICBJbnRSZWN0
IG1fcXVhZFZpc2libGVSZWN0OwotCi0gICAgLy8gQnkgZGVmYXVsdCwgdGhlIHNoYXJlZCBxdWFk
IHN0YXRlIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBxdWFkIGlzCi0gICAgLy8gb3Bh
cXVlIG9yIG5lZWRzIGJsZW5kaW5nLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHdpdGgg
dGhlc2UKLSAgICAvLyB2YXJpYWJsZXMuCi0gICAgYm9vbCBtX3F1YWRPcGFxdWU7Ci0gICAgYm9v
bCBtX25lZWRzQmxlbmRpbmc7Ci0KLSAgICAvLyBCZSBkZWZhdWx0LCB0aGlzIHJlY3QgaXMgZW1w
dHkuIEl0IGlzIHVzZWQgd2hlbiB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgYW5kIGFib3ZlCi0gICAg
Ly8gdmFyaWFibGVzIGRldGVybWluZSB0aGF0IHRoZSBxdWFkIGlzIG5vdCBmdWxseSBvcGFxdWUg
YnV0IG1heSBiZSBwYXJ0aWFsbHkgb3BhcXVlLgotICAgIEludFJlY3QgbV9vcGFxdWVSZWN0Owot
fTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkIENDRHJhd1F1YWQ7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmZkYjRlZmNiYWFjNjAwMjMyZGVlNGM0YjI2YzA5ODk2ZjMz
NWVmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdR
dWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ0lPU3VyZmFjZURyYXdRdWFkPiBDQ0lPU3Vy
ZmFjZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNp
emUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDSU9TdXJmYWNlRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgaW9TdXJm
YWNlU2l6ZSwgaW9TdXJmYWNlVGV4dHVyZUlkKSk7Ci19Ci0KLUNDSU9TdXJmYWNlRHJhd1F1YWQ6
OkNDSU9TdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNp
emUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVk
UXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpJT1N1cmZhY2VDb250ZW50LCBxdWFkUmVjdCkKLSAgICAs
IG1faW9TdXJmYWNlU2l6ZShpb1N1cmZhY2VTaXplKQotICAgICwgbV9pb1N1cmZhY2VUZXh0dXJl
SWQoaW9TdXJmYWNlVGV4dHVyZUlkKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZURyYXdRdWFkLmgKaW5kZXggMjdmODYzZWU2MTMwYzA4YzUyNTMyM2EyMjE1ZDM0MWY5OWU4YmEw
MS4uNzdkMzI2Y2JkMGQ4ODRiY2QwYjJmYzA4NzEyMDBiYmI2Yjc3N2MzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VE
cmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaApAQCAtMjYsMjYgKzI2LDEwIEBACiAjaWZuZGVmIEND
SU9TdXJmYWNlRHJhd1F1YWRfaAogI2RlZmluZSBDQ0lPU3VyZmFjZURyYXdRdWFkX2gKIAotI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVh
ZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NJT1N1cmZhY2VEcmF3UXVhZCk7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gY3JlYXRlKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIGlv
U3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7Ci0KLSAgICBjb25zdCBJ
bnRTaXplJiBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VTaXplOyB9
Ci0gICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1
cmZhY2VUZXh0dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ0lPU3VyZmFjZURyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIGlv
U3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7Ci0KLSAgICBJbnRTaXpl
IG1faW9TdXJmYWNlU2l6ZTsKLSAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZVRleHR1cmVJZDsKLX07
Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCBDQ0lPU3VyZmFj
ZURyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDAwYTM1MWIy
MmRiODQ0ZjdjNzk3YTgyOWM0ZDE2YWJmYTY2ZGE4MGEuLjQwNTI3ZWJjNmNhZDc5YWI5ZWJlNmZm
MjRlYzUwZGU3Y2Q4Y2U3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKKyNp
bmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0
ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDgsNyArNDksNiBAQCBjbGFzcyBDQ0xh
eWVyU29ydGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDUXVhZEN1bGxl
cjsKIGNsYXNzIENDUmVuZGVyZXI7Ci1jbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIGNsYXNzIExh
eWVyQ2hyb21pdW07CiAKIGNsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNDdhZTJmNzQ3
ZThkZDA3YTU0ZWIwYjJjOGU0NjJhZWIwYTU3OGFlZS4uNjEwMDE0NWI4NzQxYTVkMTliMWFkNmE4
MTllNWRkOWJkMTg3OWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTI3LDE2ICsyNywx
NiBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NfaAogCiAjaW5jbHVkZSAiU2tDb2xvci5oIgorI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENDRHJhd1F1YWQ7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDUmVuZGVy
U3VyZmFjZTsKLWNsYXNzIENDU2hhcmVkUXVhZFN0YXRlOwogCiAvLyBBIGxpc3Qgb2YgQ0NEcmF3
UXVhZCBvYmplY3RzLCBzb3J0ZWQgaW50ZXJuYWxseSBpbiBmcm9udC10by1iYWNrIG9yZGVyLgog
Y2xhc3MgQ0NRdWFkTGlzdCA6IHB1YmxpYyBWZWN0b3I8T3duUHRyPENDRHJhd1F1YWQ+ID4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCmluZGV4IDc1YmQ3NjFkMTU1
MzU4NjkxYzJiMDRjZDFlNzZiYzdhOTM4MzgyOWUuLmUzYTgxYjM3M2Q3MTc2YWJiZTQ2MGEzNWNl
ZDQ1NDlkYjA4MmY3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5j
cHAKQEAgLTI5LDE0ICsyOSwxNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAK
K3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6
OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25l
ZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RG
cmFtZSkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdR
dWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBh
c3MqIHJlbmRlclBhc3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFj
a2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNv
bnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFz
cywgaXNSZXBsaWNhLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1RleHR1cmVJZCwg
Y29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1
YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJl
bmRlclBhc3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3Vu
ZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRz
Q2hhbmdlZFNpbmNlTGFzdEZyYW1lKQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNz
KiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tn
cm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBxdWFkUmVjdCkKICAgICAsIG1fcmVuZGVyUGFz
cyhyZW5kZXJQYXNzKQogICAgICwgbV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzcy0+aWQoKSkKQEAg
LTQ5LDQgKzUxLDEwIEBAIENDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiAgICAgQVNTRVJUKG1fcmVu
ZGVyUGFzcyk7CiB9CiAKK2NvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBDQ1JlbmRlclBhc3NE
cmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1
YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6
OlJlbmRlclBhc3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1JlbmRlclBhc3NE
cmF3UXVhZCo+KHF1YWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuaAppbmRleCBiNjNhNzY0NDY4Mzk2OTgyMGE1YmQzMDFkMTA2NmEyNmM0ZTQ3NjI1Li4yNjhi
NjhlNzZmZjU1ODg2ODA4NmVlMWM2MmNkNjcwMzg3ZmJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWRfaAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKLSNpbmNsdWRl
ICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCkBAIC0zNCwxMCArMzQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDQ1JlbmRlclBhc3M7CiAKLWNsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVi
bGljIENDRHJhd1F1YWQgeworY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVy
UGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3Qg
SW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFz
cyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRl
cnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lKTsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzczsgfQogICAgIGludCByZW5kZXJQYXNzSWQoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NJZDsgfQpAQCAtNDgsOCArNDgsOSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9maWx0ZXJzOyB9CiAgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRl
cnM7IH0KIAorICAgIHN0YXRpYyBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogbWF0ZXJpYWxD
YXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqKTsKIHByaXZhdGU6Ci0gICAgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50
UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOworICAgIENDUmVuZGVyUGFzc0Ry
YXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAgICBjb25z
dCBDQ1JlbmRlclBhc3MqIG1fcmVuZGVyUGFzczsKICAgICBpbnQgbV9yZW5kZXJQYXNzSWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDg5NGVhNWFlYTJlZmFlZTZiY2YwMTViMzgw
ZTAzMTIyMzM0YTlkNzIuLjA2OGE0MTA2YmJmMjFjZGE1ZTljNDY2ZGM0M2Q3NmIwNGYzZjBhNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiY2MvQ0NT
aGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CiBjbGFzcyBDQ1F1YWRDdWxsZXI7CiBjbGFzcyBDQ1Jl
bmRlclBhc3M7Ci1jbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dFN0cmVhbTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVk
UXVhZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWUwNjgxZmY1ZmFmZDIzYzU4NmNjYTcxZjllMTQ3MDU2ODIxNzE1ZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAi
Y2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKLQotI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKLQot
dXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1QYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJv
b2wgb3BhcXVlKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaGFyZWRRdWFkU3RhdGUo
cXVhZFRyYW5zZm9ybSwgbGF5ZXJUcmFuc2Zvcm0sIGxheWVyUmVjdCwgc2Npc3NvclJlY3QsIG9w
YWNpdHksIG9wYXF1ZSkpOwotfQotCi1DQ1NoYXJlZFF1YWRTdGF0ZTo6Q0NTaGFyZWRRdWFkU3Rh
dGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBv
cGFxdWUpCi0gICAgOiBtX3F1YWRUcmFuc2Zvcm0ocXVhZFRyYW5zZm9ybSkKLSAgICAsIG1fbGF5
ZXJUcmFuc2Zvcm0obGF5ZXJUcmFuc2Zvcm0pCi0gICAgLCBtX2xheWVyUmVjdChsYXllclJlY3Qp
Ci0gICAgLCBtX3NjaXNzb3JSZWN0KHNjaXNzb3JSZWN0KQotICAgICwgbV9vcGFjaXR5KG9wYWNp
dHkpCi0gICAgLCBtX29wYXF1ZShvcGFxdWUpCi17Ci19Ci0KLWJvb2wgQ0NTaGFyZWRRdWFkU3Rh
dGU6OmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdAotewotICAgIC8vIE5vdGU6IHRo
aXMgZG9lc24ndCBjb25zaWRlciB3aW5kb3cgb3IgcHJvamVjdGlvbiBtYXRyaWNlcy4KLSAgICAv
LyBBc3N1bWUgdGhhdCB0aGV5J3JlIG9ydGhvbm9ybWFsIGFuZCBoYXZlIGludGVnZXIgc2NhbGVz
IGFuZCB0cmFuc2xhdGlvbnMuCi0gICAgYm9vbCBjbGlwcGVkID0gZmFsc2U7Ci0gICAgRmxvYXRR
dWFkIHF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKHF1YWRUcmFuc2Zvcm0oKSwgRmxvYXRRdWFk
KGxheWVyUmVjdCgpKSwgY2xpcHBlZCk7Ci0gICAgcmV0dXJuICFjbGlwcGVkICYmIHF1YWQuaXNS
ZWN0aWxpbmVhcigpICYmIHF1YWQuYm91bmRpbmdCb3goKS5pc0V4cHJlc3NpYmxlQXNJbnRSZWN0
KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCmluZGV4IDQ1NDBhMDZm
ODRlZTUyZGZhYzVkZTM1NjA0OGViYjE4YzU4ZGI3MmMuLjc5MDM2ZGRkNGQ4NmVkMzU5YTIxOTdl
Zjg1MjQzYTNhMmEzYzU0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0MCAr
MjYsMTAgQEAKICNpZm5kZWYgQ0NTaGFyZWRRdWFkU3RhdGVfaAogI2RlZmluZSBDQ1NoYXJlZFF1
YWRTdGF0ZV9oCiAKLSNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJJbnRSZWN0Lmgi
Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDU2hhcmVkUXVhZFN0
YXRlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1NoYXJlZFF1YWRTdGF0ZSk7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZShjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpOwotCi0gICAgLy8gVGhlIHRyYW5zZm9ybSB0aGF0IHF1YWRzIGluIGEg
Q0NEcmF3UXVhZCBzaG91bGQgYmUgdHJhbnNmb3JtZWQgd2l0aC4KLSAgICBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV9xdWFkVHJhbnNmb3JtOyB9Ci0gICAgLy8gVGhlIHRyYW5zZm9ybSB0aGF0IGxheWVyUmVjdCgp
IHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRy
YW5zZm9ybTsgfQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJSZWN0OyB9Ci0gICAgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3NjaXNzb3JSZWN0OyB9Ci0KLSAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGFjaXR5OyB9Ci0gICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3BhcXVlOyB9Ci0gICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgQ0NTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKLQot
ICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9xdWFkVHJhbnNmb3JtOwotICAg
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9sYXllclRyYW5zZm9ybTsKLSAgICBJ
bnRSZWN0IG1fbGF5ZXJSZWN0OwotICAgIEludFJlY3QgbV9zY2lzc29yUmVjdDsKLSAgICBmbG9h
dCBtX29wYWNpdHk7Ci0gICAgYm9vbCBtX29wYXF1ZTsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlIENDU2hhcmVkUXVhZFN0YXRlOwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODY2ODM2OWI2OWI3MDk2ZWFjMzI1YTBmODE0OWZmODAwMGZlYjlm
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENDU29saWRDb2xvckRyYXdRdWFkPiBDQ1NvbGlk
Q29sb3JEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yKQotewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NTb2xpZENvbG9yRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgY29sb3IpKTsKLX0KLQotQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xv
ckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yKQotICAgIDogQ0NEcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IsIHF1YWRSZWN0KQotICAgICwgbV9j
b2xvcihjb2xvcikKLXsKLSAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAyNTUpCi0gICAg
ICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOwotICAgIGVsc2UKLSAgICAgICAgbV9vcGFxdWVSZWN0
ID0gcXVhZFJlY3Q7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
CmluZGV4IDgzZWEzNDA2NjE1NzAxMGYwZDEyOTJlOGUxNTYzM2NlMmExNzNlYjEuLmI2YzBlZTAy
NWVhM2FlMmJiY2FhZDczODVmY2ViYmMzY2E2OWY5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yRHJhd1F1YWQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiwyNSArMjYsMTAgQEAKICNpZm5kZWYgQ0NTb2xpZENvbG9yRHJhd1F1
YWRfaAogI2RlZmluZSBDQ1NvbGlkQ29sb3JEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9y
LmgiCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkIDogcHVibGlj
IENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU29saWRDb2xvckRyYXdR
dWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NvbGlkQ29sb3JEcmF3UXVh
ZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIFNrQ29s
b3IpOwotCi0gICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0K
LXByaXZhdGU6Ci0gICAgQ0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvcik7Ci0KLSAgICBTa0NvbG9yIG1fY29sb3I7Ci19
OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkIENDU29saWRD
b2xvckRyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVv
RHJhd1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTFiYTI5OTIzZjZk
MGUwMzE4NjVlM2E1NDJhODRiMTQwZTA4YTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NTdHJl
YW1WaWRlb0RyYXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxD
Q1N0cmVhbVZpZGVvRHJhd1F1YWQ+IENDU3RyZWFtVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRS
ZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU3RyZWFtVmlkZW9E
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIG1hdHJpeCkpOwot
fQotCi1DQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OkNDU3RyZWFtVmlkZW9EcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtYXRyaXgpCi0gICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVh
ZDo6U3RyZWFtVmlkZW9Db250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1
cmVJZCkKLSAgICAsIG1fbWF0cml4KG1hdHJpeCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1N0cmVhbVZpZGVvRHJhd1F1YWQuaAppbmRleCAzMDM3MzQ4ZDM1NGY2ZWI3ZTk3OGE1NGU1Yzg3
YTZkNmQ0NjIwYjZlLi5hMTg5MDYxMWE0NDFkMmRiOGEyNDY3NmQzOGY4NWQzODRlZGVkZDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1N0cmVhbVZpZGVvRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaApAQCAtMjYsMjcgKzI2LDEw
IEBACiAjaWZuZGVmIENDU3RyZWFtVmlkZW9EcmF3UXVhZF9oCiAjZGVmaW5lIENDU3RyZWFtVmlk
ZW9EcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8cHVi
bGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDU3RyZWFtVmlkZW9EcmF3UXVhZCA6IHB1Ymxp
YyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1N0cmVhbVZpZGVvRHJh
d1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU3RyZWFtVmlkZW9EcmF3
UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVu
c2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
OwotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7
IH0KLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgoKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeDsgfQotCi1wcml2YXRlOgotICAgIENDU3RyZWFtVmlkZW9E
cmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25l
ZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQot
ICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9tYXRyaXg7Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvclN0cmVh
bVZpZGVvUXVhZCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ZGJjYTk1ZmJlOGU2MTgxZDYzOTI2MTkxM2QxNGRlMTJiMjljOWQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVEcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25Q
dHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0
UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1RleHR1cmVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHBy
ZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7Ci19Ci0KLUNDVGV4dHVyZURyYXdR
dWFkOjpDQ1RleHR1cmVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBl
ZCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUZXh0dXJl
Q29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAgLCBt
X3ByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAgLCBtX3V2UmVjdCh1
dlJlY3QpCi0gICAgLCBtX2ZsaXBwZWQoZmxpcHBlZCkKLXsKLX0KLQotdm9pZCBDQ1RleHR1cmVE
cmF3UXVhZDo6c2V0TmVlZHNCbGVuZGluZygpCi17Ci0gICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1
ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgKaW5kZXggYTRiYWVmYTEz
M2FmNGEwMjEzZThlNWY3ZjkxZGM5MmFhMGQ0M2E4Ni4uMjhjM2Q5MTMyZmI1OGQ4ZGExMjBjY2Y5
YzE1OWMxNzM0NTEwZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oCkBAIC0y
NiwzMiArMjYsMTAgQEAKICNpZm5kZWYgQ0NUZXh0dXJlRHJhd1F1YWRfaAogI2RlZmluZSBDQ1Rl
eHR1cmVEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQg
OiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUZXh0dXJl
RHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGV4dHVyZURyYXdR
dWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5z
aWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0
JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7Ci0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25z
dCB7IHJldHVybiAgbV90ZXh0dXJlSWQ7IH0KLSAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSgp
IGNvbnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxpZWRBbHBoYTsgfQotICAgIEZsb2F0UmVjdCB1
dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQotICAgIGJvb2wgZmxpcHBlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQotCi0gICAgdm9pZCBzZXROZWVkc0JsZW5kaW5nKCk7
Ci0KLXByaXZhdGU6Ci0gICAgQ0NUZXh0dXJlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZV9pZCwgYm9vbCBwcmVtdWx0aXBs
aWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOwotICAgIAot
ICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7
Ci0gICAgRmxvYXRSZWN0IG1fdXZSZWN0OwotICAgIGJvb2wgbV9mbGlwcGVkOwotfTsKLQordHlw
ZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCBDQ1RleHR1cmVEcmF3UXVhZDsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIzNWI2ZjY5ZjNjMjAxNmY0ZTIzODc3M2YwZGM5NGM2OTU2YjAzOTAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJl
U2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBs
ZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21F
ZGdlQUEpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQs
IHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEs
IHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwotfQotCi1DQ1RpbGVEcmF3
UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3Qs
IFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNl
dCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9v
bCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wg
cmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX3Rl
eHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkK
LSAgICAsIG1fdGV4dHVyZVNpemUodGV4dHVyZVNpemUpCi0gICAgLCBtX3RleHR1cmVGaWx0ZXIo
dGV4dHVyZUZpbHRlcikKLSAgICAsIG1fc3dpenpsZUNvbnRlbnRzKHN3aXp6bGVDb250ZW50cykK
LSAgICAsIG1fbGVmdEVkZ2VBQShsZWZ0RWRnZUFBKQotICAgICwgbV90b3BFZGdlQUEodG9wRWRn
ZUFBKQotICAgICwgbV9yaWdodEVkZ2VBQShyaWdodEVkZ2VBQSkKLSAgICAsIG1fYm90dG9tRWRn
ZUFBKGJvdHRvbUVkZ2VBQSkKLXsKLSAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQotICAgICAgICBt
X25lZWRzQmxlbmRpbmcgPSB0cnVlOwotICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDMzNTAxYTgwNmNmYWZmOTYwZjI0
YzZkZDZmMWM3ODIwYTE1Nzg4YzUuLmQ1MzBmNGE0OGYyOTQ5ZWIzYWNiMjhhNjNjMmI3NmNhYTdh
OTQ1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NCArMjYsMTAgQEAKICNpZm5kZWYg
Q0NUaWxlRHJhd1F1YWRfaAogI2RlZmluZSBDQ1RpbGVEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJH
cmFwaGljc1R5cGVzM0QuaCIKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJs
aWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQp
OwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3Qg
SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IElu
dFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBi
b29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwotCi0g
ICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJ
ZDsgfQotICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVPZmZzZXQ7IH0KLSAgICBJbnRTaXplIHRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0dXJlU2l6ZTsgfQotICAgIEdDM0RpbnQgdGV4dHVyZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZUZpbHRlcjsgfQotICAgIGJvb2wgc3dpenpsZUNvbnRlbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zd2l6emxlQ29udGVudHM7IH0KLQotICAgIGJvb2wgbGVmdEVkZ2VBQSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVmdEVkZ2VBQTsgfQotICAgIGJvb2wgdG9wRWRnZUFBKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3BFZGdlQUE7IH0KLSAgICBib29sIHJpZ2h0RWRnZUFBKCkgY29uc3QgeyByZXR1
cm4gbV9yaWdodEVkZ2VBQTsgfQotICAgIGJvb2wgYm90dG9tRWRnZUFBKCkgY29uc3QgeyByZXR1
cm4gbV9ib3R0b21FZGdlQUE7IH0KLQotICAgIGJvb2wgaXNBbnRpYWxpYXNlZCgpIGNvbnN0IHsg
cmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVkZ2VBQSgpIHx8IGJv
dHRvbUVkZ2VBQSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYg
b3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJl
RmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVk
Z2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwotCi0gICAgUGxhdGZv
cm0zRE9iamVjdCBtX3RleHR1cmVJZDsKLSAgICBJbnRQb2ludCBtX3RleHR1cmVPZmZzZXQ7Ci0g
ICAgSW50U2l6ZSBtX3RleHR1cmVTaXplOwotICAgIEdDM0RpbnQgbV90ZXh0dXJlRmlsdGVyOwot
ICAgIGJvb2wgbV9zd2l6emxlQ29udGVudHM7Ci0gICAgYm9vbCBtX2xlZnRFZGdlQUE7Ci0gICAg
Ym9vbCBtX3RvcEVkZ2VBQTsKLSAgICBib29sIG1fcmlnaHRFZGdlQUE7Ci0gICAgYm9vbCBtX2Jv
dHRvbUVkZ2VBQTsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQg
Q0NUaWxlRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5o
CmluZGV4IGIyZTA4OGZjZjcxMzQwMmZkNDJlNWE0Y2UzYzI2OTc4ZTA1NTUxMTQuLmNkNWRiMDli
Y2QwNTZkOTAzYjVmNWM3YmQzMjM4MDNkODNmNTdjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5jcHAKaW5kZXggYTJkNjJiYTQ0Yzg2
NTc2NmY5YWEyOTk1MGU0OGE1MmFkMjYxZWI0Ny4uNDNmMmUyZjZmNTc4ZThkNDhlODY2MTk5MGFh
Yjc3YTM3ODYxMzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwCkBA
IC0yNywxOSArMjcsMjcgQEAKIAogI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgog
Cit1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiBDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5l
LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlk
ZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSkKK1Bhc3NPd25QdHI8Q0NZVVZWaWRlb0Ry
YXdRdWFkPiBDQ1lVVlZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1lV
VlZpZGVvRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgeVBsYW5lLCB1UGxhbmUs
IHZQbGFuZSkpOwogfQogCi1DQ1lVVlZpZGVvRHJhd1F1YWQ6OkNDWVVWVmlkZW9EcmF3UXVhZChj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25z
dCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBDQ0RyYXdRdWFkOjpZVVZWaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQorQ0NZVVZWaWRlb0Ry
YXdRdWFkOjpDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJh
bWVQbGFuZSYgdlBsYW5lKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRl
LCBXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250ZW50LCBxdWFkUmVjdCkKICAgICAsIG1f
eVBsYW5lKHlQbGFuZSkKICAgICAsIG1fdVBsYW5lKHVQbGFuZSkKICAgICAsIG1fdlBsYW5lKHZQ
bGFuZSkKIHsKIH0KIAorY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBDQ1lVVlZpZGVvRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQor
eworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpZVVZW
aWRlb0NvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1lVVlZpZGVvRHJh
d1F1YWQqPihxdWFkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaApp
bmRleCAwY2Q3NThjNWIwZjAwM2Q2NDY1ZGI5MzM2Y2I5N2VmNWIxZjI0M2NmLi42Njg0YWQ4OTc4
NDE1MDdhYjMxYmZjMzNhMDVkYjE4NmJlZDAwZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVv
RHJhd1F1YWQuaApAQCAtMjYsMjMgKzI2LDI0IEBACiAjaWZuZGVmIENDWVVWVmlkZW9EcmF3UXVh
ZF9oCiAjZGVmaW5lIENDWVVWVmlkZW9EcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJjYy9DQ0RyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDb21wb3NpdG9yUXVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkIDogcHVibGljIEND
RHJhd1F1YWQgeworY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkIDogcHVibGljIFdlYktpdDo6V2Vi
Q29tcG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDWVVWVmlkZW9EcmF3
UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFk
PiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxh
bmUmIHZQbGFuZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiBj
cmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1w
bDo6RnJhbWVQbGFuZSYgeVBsYW5lKCkgY29uc3QgeyByZXR1cm4gbV95UGxhbmU7IH0KICAgICBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUoKSBjb25zdCB7IHJldHVy
biBtX3VQbGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQ
bGFuZSgpIGNvbnN0IHsgcmV0dXJuIG1fdlBsYW5lOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgQ0NZ
VVZWaWRlb0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZCopOwogcHJpdmF0ZToKLSAgICBDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQ
bGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUs
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSk7CisgICAgQ0NZVVZW
aWRlb0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSos
IGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxh
bmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKIAogICAgIENDVmlkZW9MYXllcklt
cGw6OkZyYW1lUGxhbmUgbV95UGxhbmU7CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSBtX3VQbGFuZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VGVzdENvbW1vbi5jcHAKaW5kZXggYjM1ODE5NzU5ZDQxNDI0OTdkODI4NTI5MDNkNjBlNjU1MjAw
YTQ1MS4uNmNjNGQyYzM5Y2FjYTAyNDE5ZGE0M2E1ODUxZGQ2YjY5YjdkY2I0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAKQEAg
LTQzLDEwICs0MywxMSBAQCB2b2lkIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChjb25zdCBD
Q1F1YWRMaXN0JiBxdWFkcywgY29uc3QgSW50UmVjdCYgcmVjdCkKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQ0NEcmF3UXVhZCogcXVh
ZCA9IHF1YWRzW2ldLmdldCgpOworICAgICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVh
ZFJlY3QoKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShyZWN0LmNvbnRhaW5zKHF1YWQtPnF1YWRS
ZWN0KCkpKSA8PCBxdWFkU3RyaW5nIDw8IGk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlbWFpbmlu
Zy5jb250YWlucyhxdWFkLT5xdWFkUmVjdCgpKSkgPDwgcXVhZFN0cmluZyA8PCBpOwotICAgICAg
ICByZW1haW5pbmcuc3VidHJhY3QoUmVnaW9uKHF1YWQtPnF1YWRSZWN0KCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUocmVjdC5jb250YWlucyhxdWFkUmVjdCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsK
KyAgICAgICAgRVhQRUNUX1RSVUUocmVtYWluaW5nLmNvbnRhaW5zKHF1YWRSZWN0KSkgPDwgcXVh
ZFN0cmluZyA8PCBpOworICAgICAgICByZW1haW5pbmcuc3VidHJhY3QoUmVnaW9uKHF1YWRSZWN0
KSk7CiAgICAgfQogCiAgICAgRVhQRUNUX1RSVUUocmVtYWluaW5nLmlzRW1wdHkoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNw
cAppbmRleCBiNjVlNmU3MmJmNThjMWYzMDBhZmVhY2EwZDE5NmMxMzRlOWJlNWRlLi5jY2FiYjA0
N2VkYmJhMjg0ZjQzZjcxMmMwZWUwNjJlYzZjYzllYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKQEAgLTExNiwxMyAr
MTE2LDEzIEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3Jl
YXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFF1YWRTdGF0ZSA9IHJlbmRlclN1cmZhY2UtPmNyZWF0ZVNoYXJlZFF1YWRTdGF0
ZSgpOwogCi0gICAgRVhQRUNUX1RSVUUoc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtKCku
aXNJZGVudGl0eSgpKTsKLSAgICBFWFBFQ1RfRVEoMzAsIHNoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJU
cmFuc2Zvcm0oKS5tNDEoKSk7Ci0gICAgRVhQRUNUX0VRKDQwLCBzaGFyZWRRdWFkU3RhdGUtPmxh
eWVyVHJhbnNmb3JtKCkubTQyKCkpOwotICAgIEVYUEVDVF9FUShjb250ZW50UmVjdCwgc2hhcmVk
UXVhZFN0YXRlLT5sYXllclJlY3QoKSk7Ci0gICAgRVhQRUNUX0VRKGNsaXBSZWN0LCBzaGFyZWRR
dWFkU3RhdGUtPnNjaXNzb3JSZWN0KCkpOwotICAgIEVYUEVDVF9FUSgxLCBzaGFyZWRRdWFkU3Rh
dGUtPm9wYWNpdHkoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHNoYXJlZFF1YWRTdGF0ZS0+aXNPcGFx
dWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtLmlz
SWRlbnRpdHkoKSk7CisgICAgRVhQRUNUX0VRKDMwLCBzaGFyZWRRdWFkU3RhdGUtPmxheWVyVHJh
bnNmb3JtLm00MSgpKTsKKyAgICBFWFBFQ1RfRVEoNDAsIHNoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJU
cmFuc2Zvcm0ubTQyKCkpOworICAgIEVYUEVDVF9FUShjb250ZW50UmVjdCwgSW50UmVjdChzaGFy
ZWRRdWFkU3RhdGUtPmxheWVyUmVjdCkpOworICAgIEVYUEVDVF9FUShjbGlwUmVjdCwgSW50UmVj
dChzaGFyZWRRdWFkU3RhdGUtPnNjaXNzb3JSZWN0KSk7CisgICAgRVhQRUNUX0VRKDEsIHNoYXJl
ZFF1YWRTdGF0ZS0+b3BhY2l0eSk7CisgICAgRVhQRUNUX0ZBTFNFKHNoYXJlZFF1YWRTdGF0ZS0+
b3BhcXVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDIy
NzYzY2VmMzM5ZTViZmVlYTkyMGE1NDNhZGM0ZmY1YjExY2I2NGIuLjUzMmFjNmJkYzBjYTcyMmNk
MWM1NjkwNDM1M2VmMDA0YjU4ODA4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNr
Z3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNo
YXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFTU0VSVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKHF1YWRDdWxs
ZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKS0+Y29sb3IoKSwgdGVzdENv
bG9yKTsKKyAgICBFWFBFQ1RfRVEoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0uZ2V0KCkpLT5jb2xvcigpLCB0ZXN0Q29sb3IpOwogfQog
CiBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RPcGFjaXR5SW5R
dWFkKQpAQCAtMTAxLDcgKzEwMSw3IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwg
dmVyaWZ5Q29ycmVjdE9wYWNpdHlJblF1YWQpCiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFT
U0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7Ci0gICAgRVhQRUNUX0VR
KG9wYWNpdHksIHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENvbG9yRHJhd1F1YWQo
KS0+b3BhY2l0eSgpKTsKKyAgICBFWFBFQ1RfRVEob3BhY2l0eSwgQ0NTb2xpZENvbG9yRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChxdWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0uZ2V0KCkpLT5vcGFjaXR5
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151801</attachid>
            <date>2012-07-11 15:28:06 -0700</date>
            <delta_ts>2012-07-11 16:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90582-20120711152805.patch</filename>
            <type>text/plain</type>
            <size>140365</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyOGJjZDU2NjJkMmRj
ODlkMmZlMTJiODJhNDQ4OGYyODkzYzgyM2NjLi44ZjJhNjc2YjA4YWFhZGFjYmY5NmE1N2Y4YTk0
NDk1NDg3ZjZjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMi0wNy0wNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIGNvbXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbW92ZXMgQ0NT
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQsIGFuZCBhbGwgYnV0IHR3byBDQypEcmF3UXVhZAor
ICAgICAgICBjbGFzc2VzIHRvIHRoZSBXZWJLaXQgbmFtZXNwYWNlLCBhcyBhIGZpcnN0IHN0ZXAg
dG8gcHVzaGluZyB0aGVtCisgICAgICAgIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeSBmb3Ig
dGhlIHViZXJjb21wb3NpdG9yLgorCisgICAgICAgIC0gVGhlIGludGVudCBpcyB0byBzZXJpYWxp
emUgdGhlIGNsYXNzIGhpZXJhcmNoeSB1c2luZyB0aGUgc2FtZQorICAgICAgICBtZWNoYW5pc20g
YXMgV2ViSW5wdXRFdmVudC4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZXJlIGFyZSB0aHJlZQor
ICAgICAgICByZXF1aXJlbWVudHM6IHB1cmUgUE9EIGRhdGEsIGEgbWV0aG9kIHJldHVybmluZyBz
aXplLCBhbmQgYSBwYWNraW5nCisgICAgICAgIHByYWdtYS4KKworICAgICAgICAtIFByaXZhdGUg
ZGF0YSBtZW1iZXJzIGFyZSBmaW5lIHdpdGggdGhpcyBraW5kIG9mIHNlcmlhbGl6ZXIsIGFuZCBh
CisgICAgICAgIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgbm90IG5lZWRlZC4gIEJlY2F1c2Ugb2Yg
dGhhdCwgd2UgY2FuIG1haW50YWluCisgICAgICAgIHRoZSBzYW1lIGVuY2Fwc3VsYXRpb24gYW5k
IGNvbnZlbmllbnQgQVBJcyAoYmVoaW5kCisgICAgICAgIFdFQktJVF9JTVBMRU1FTlRBVElPTikg
YXMgdGhlIG9yaWdpbmFsIGNsYXNzZXMuICBUbyBlYXNlIHRoZQorICAgICAgICB0cmFuc2l0aW9u
LCB0aGUgb3JpZ2luYWwgV2ViQ29yZSBoZWFkZXJzIHN0aWxsIGV4aXN0IGFuZCB0eXBlZGVmIHRv
CisgICAgICAgIHRoZSBuZXcgY2xhc3Nlcy4KKworICAgICAgICAtIEhvd2V2ZXIsIFNoYXJlZFF1
YWRTdGF0ZSB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcgdGhlIG5vcm1hbAorICAgICAgICBJUENf
U1RSVUNUX1RSQUlUUyBtYWNybywgc28gSSBtYWRlIGl0cyBtZW1iZXJzIHB1YmxpYy4gIEEgY3Vz
dG9tCisgICAgICAgIHNlcmlhbGl6ZXIgKG9uIHF1YWQgbGlzdHMpIHdpbGwgbWFpbnRhaW4gdGhl
IHBvaW50ZXJzIGZyb20gcXVhZHMgdG8KKyAgICAgICAgU2hhcmVkUXVhZFN0YXRlcy4KKworICAg
ICAgICAtIEkgY29udmVydGVkIHRoZSBNYXRlcmlhbCBjYXN0aW5nIG1lY2hhbmlzbSB0byBtYXRl
cmlhbENhc3QoKSBtZXRob2RzCisgICAgICAgIGxpdmluZyBpbiB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiAgVGhhdCB3YXksIHRoZSBXZWJDb21wb3NpdG9yUXVhZCBoZWFkZXIKKyAgICAgICAgZG9lc24n
dCBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGl0cyBkZXJpdmVkIGNsYXNzZXMuCisKKyAgICAgICAg
LSBRdWFkIGNsYXNzZXMgbm90IHlldCB0cmFuc2l0aW9uZWQgY2FuIHN0aWxsIGJlIHVzZWQgaW4K
KyAgICAgICAgbm9uLXViZXJjb21wb3NpdG9yIG1vZGUuICBDQ1JlbmRlclBhc3NEcmF3UXVhZCBh
bmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgIGFyZSBjdXJyZW50bHkgbm9uLVBPRCBhbmQg
SSBsZWZ0IHRoZW0gaW4gdGhlaXIgb3JpZ2luYWwgZmlsZXMuCisKKyAgICAgICAgVGhpcyBhcHBy
b2FjaCBpcyB0aGUgYmVzdCBJJ3ZlIGZvdW5kIHNvIGZhciwgc2luY2UgaXQgcHJlc2VydmVzIGFs
bAorICAgICAgICBXZWJDb3JlLWZhY2luZyBBUElzIGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgY29k
ZSBkdXBsaWNhdGlvbiAobmV3IHF1YWQKKyAgICAgICAgdHlwZXMgb3IgbWVtYmVycyBjYW4gYmUg
YWRkZWQgYnkgbW9kaWZ5aW5nIG9ubHkgb25lIHBsYWNlKS4gIFRoZXJlCisgICAgICAgIGFsc28g
c2hvdWxkIG5vdCBiZSBhbiB1bnJlYXNvbmFibGUgYW1vdW50IG9mIGN1c3RvbSBzZXJpYWxpemVy
IGNvZGUKKyAgICAgICAgcmVxdWlyZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclF1YWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpsYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzTGF5ZXJBeGlzQWxp
Z25lZEludFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OmlzRGVidWdR
dWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6Om1hdGVyaWFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRTaGFyZWRRdWFkU3RhdGUpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U29saWRDb2xvckRyYXdRdWFkLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6Y29sb3IpOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnV2
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6dGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpwcmVtdWx0
aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
OmZsaXBwZWQpOgorCiAyMDEyLTA3LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIGEgV2ViS2l0OjpXZWIqIHdyYXBwZXIg
Zm9yIHRoZSBjYyBhbmltYXRpb24gY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk4NzIxNTdhZTJjYjEy
NjBlYzAzZjRlZmMxNjE5MWM5NGYzOGM0ZWMuLmE1MGY2ODQ4NjE2NzVkNDY5MzdjMDJmZGM2NGU1
NTBlYjczOTZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTItMDctMDQgIEFs
ZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TW92ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIENDU2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkLCBhbmQgYWxsIGJ1dCB0d28gQ0MqRHJhd1F1YWQKKyAg
ICAgICAgY2xhc3NlcyB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBzdGVwIHRv
IHB1c2hpbmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkgZm9yIHRo
ZSB1YmVyY29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2VyaWFsaXpl
IHRoZSBjbGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIGFz
IFdlYklucHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhyZWUKKyAg
ICAgICAgcmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5pbmcgc2l6
ZSwgYW5kIGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2YXRlIGRh
dGEgbWVtYmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBhbmQgYQor
ICAgICAgICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNlIG9mIHRo
YXQsIHdlIGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9uIGFuZCBj
b252ZW5pZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJT04pIGFz
IHRoZSBvcmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNpdGlvbiwg
dGhlIG9yaWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRlZiB0bwor
ICAgICAgICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFyZWRRdWFk
U3RhdGUgd2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAgSVBDX1NU
UlVDVF9UUkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBBIGN1c3Rv
bQorICAgICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWluIHRoZSBw
b2ludGVycyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisKKyAgICAg
ICAgLSBJIGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8gbWF0ZXJp
YWxDYXN0KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xhc3Nlcy4g
IFRoYXQgd2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRvZXNuJ3Qg
bmVlZCB0byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAgICAgIC0g
UXVhZCBjbGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2VkIGluCisg
ICAgICAgIG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5k
IENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICBhcmUgY3VycmVudGx5IG5vbi1QT0QgYW5kIEkg
bGVmdCB0aGVtIGluIHRoZWlyIG9yaWdpbmFsIGZpbGVzLgorCisgICAgICAgIFRoaXMgYXBwcm9h
Y2ggaXMgdGhlIGJlc3QgSSd2ZSBmb3VuZCBzbyBmYXIsIHNpbmNlIGl0IHByZXNlcnZlcyBhbGwK
KyAgICAgICAgV2ViQ29yZS1mYWNpbmcgQVBJcyBhbmQgYXZvaWRzIHVubmVjZXNzYXJ5IGNvZGUg
ZHVwbGljYXRpb24gKG5ldyBxdWFkCisgICAgICAgIHR5cGVzIG9yIG1lbWJlcnMgY2FuIGJlIGFk
ZGVkIGJ5IG1vZGlmeWluZyBvbmx5IG9uZSBwbGFjZSkuICBUaGVyZQorICAgICAgICBhbHNvIHNo
b3VsZCBub3QgYmUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiBjdXN0b20gc2VyaWFsaXplciBj
b2RlCisgICAgICAgIHJlcXVpcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vLW9wIHJl
ZmFjdG9yaW5nLikKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6V2ViQ29tcG9z
aXRvclF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpzZXRRdWFkVmlzaWJsZVJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yU29saWRDb2xvclF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OnNldE5l
ZWRzQmxlbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaDoKKyAgICAgICAgKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3JkZXJE
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVy
aWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdC
b3JkZXJEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VEcmF3UXVhZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpDQ1N0
cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAg
ICAgIChDQ1RpbGVEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVh
ZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5oOgorICAgICAgICAo
Q0NZVVZWaWRlb0RyYXdRdWFkKToKKwogMjAxMi0wNy0xMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbmFtZSBsYXllclJlY3QgdG8g
Y29udGVudFJlY3QgZm9yIHJlY3RzIHRoYXQgbGl2ZSBpbiBjb250ZW50IHNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ0NzcyZWRkYmQyM2RhNWRmNDA3ZTBjYTg4YWZmYTA1Njcz
ZDY1OWQuLmJjNGVkYmJhMDQ3ZDVjMGY2MjIyZTJjNThlM2UzMGZmOWU1YzNjNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDctMDQgIEFsZXhhbmRy
ZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBj
b21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIENDU2hhcmVkUXVh
ZFN0YXRlLCBDQ0RyYXdRdWFkLCBhbmQgYWxsIGJ1dCB0d28gQ0MqRHJhd1F1YWQKKyAgICAgICAg
Y2xhc3NlcyB0byB0aGUgV2ViS2l0IG5hbWVzcGFjZSwgYXMgYSBmaXJzdCBzdGVwIHRvIHB1c2hp
bmcgdGhlbQorICAgICAgICBhY3Jvc3MgdGhlIHByb2Nlc3MgYm91bmRhcnkgZm9yIHRoZSB1YmVy
Y29tcG9zaXRvci4KKworICAgICAgICAtIFRoZSBpbnRlbnQgaXMgdG8gc2VyaWFsaXplIHRoZSBj
bGFzcyBoaWVyYXJjaHkgdXNpbmcgdGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIGFzIFdlYklu
cHV0RXZlbnQuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGVyZSBhcmUgdGhyZWUKKyAgICAgICAg
cmVxdWlyZW1lbnRzOiBwdXJlIFBPRCBkYXRhLCBhIG1ldGhvZCByZXR1cm5pbmcgc2l6ZSwgYW5k
IGEgcGFja2luZworICAgICAgICBwcmFnbWEuCisKKyAgICAgICAgLSBQcml2YXRlIGRhdGEgbWVt
YmVycyBhcmUgZmluZSB3aXRoIHRoaXMga2luZCBvZiBzZXJpYWxpemVyLCBhbmQgYQorICAgICAg
ICBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIG5vdCBuZWVkZWQuICBCZWNhdXNlIG9mIHRoYXQsIHdl
IGNhbiBtYWludGFpbgorICAgICAgICB0aGUgc2FtZSBlbmNhcHN1bGF0aW9uIGFuZCBjb252ZW5p
ZW50IEFQSXMgKGJlaGluZAorICAgICAgICBXRUJLSVRfSU1QTEVNRU5UQVRJT04pIGFzIHRoZSBv
cmlnaW5hbCBjbGFzc2VzLiAgVG8gZWFzZSB0aGUKKyAgICAgICAgdHJhbnNpdGlvbiwgdGhlIG9y
aWdpbmFsIFdlYkNvcmUgaGVhZGVycyBzdGlsbCBleGlzdCBhbmQgdHlwZWRlZiB0bworICAgICAg
ICB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgLSBIb3dldmVyLCBTaGFyZWRRdWFkU3RhdGUg
d2lsbCBiZSBzZXJpYWxpemVkIHVzaW5nIHRoZSBub3JtYWwKKyAgICAgICAgSVBDX1NUUlVDVF9U
UkFJVFMgbWFjcm8sIHNvIEkgbWFkZSBpdHMgbWVtYmVycyBwdWJsaWMuICBBIGN1c3RvbQorICAg
ICAgICBzZXJpYWxpemVyIChvbiBxdWFkIGxpc3RzKSB3aWxsIG1haW50YWluIHRoZSBwb2ludGVy
cyBmcm9tIHF1YWRzIHRvCisgICAgICAgIFNoYXJlZFF1YWRTdGF0ZXMuCisKKyAgICAgICAgLSBJ
IGNvbnZlcnRlZCB0aGUgTWF0ZXJpYWwgY2FzdGluZyBtZWNoYW5pc20gdG8gbWF0ZXJpYWxDYXN0
KCkgbWV0aG9kcworICAgICAgICBsaXZpbmcgaW4gdGhlIGRlcml2ZWQgY2xhc3Nlcy4gIFRoYXQg
d2F5LCB0aGUgV2ViQ29tcG9zaXRvclF1YWQgaGVhZGVyCisgICAgICAgIGRvZXNuJ3QgbmVlZCB0
byBrbm93IGFib3V0IGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzLgorCisgICAgICAgIC0gUXVhZCBj
bGFzc2VzIG5vdCB5ZXQgdHJhbnNpdGlvbmVkIGNhbiBzdGlsbCBiZSB1c2VkIGluCisgICAgICAg
IG5vbi11YmVyY29tcG9zaXRvciBtb2RlLiAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgYW5kIENDWVVW
VmlkZW9EcmF3UXVhZAorICAgICAgICBhcmUgY3VycmVudGx5IG5vbi1QT0QgYW5kIEkgbGVmdCB0
aGVtIGluIHRoZWlyIG9yaWdpbmFsIGZpbGVzLgorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggaXMg
dGhlIGJlc3QgSSd2ZSBmb3VuZCBzbyBmYXIsIHNpbmNlIGl0IHByZXNlcnZlcyBhbGwKKyAgICAg
ICAgV2ViQ29yZS1mYWNpbmcgQVBJcyBhbmQgYXZvaWRzIHVubmVjZXNzYXJ5IGNvZGUgZHVwbGlj
YXRpb24gKG5ldyBxdWFkCisgICAgICAgIHR5cGVzIG9yIG1lbWJlcnMgY2FuIGJlIGFkZGVkIGJ5
IG1vZGlmeWluZyBvbmx5IG9uZSBwbGFjZSkuICBUaGVyZQorICAgICAgICBhbHNvIHNob3VsZCBu
b3QgYmUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiBjdXN0b20gc2VyaWFsaXplciBjb2RlCisg
ICAgICAgIHJlcXVpcmVkLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRlc3RDb21tb24uY3Bw
OgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OnZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVj
dCk6CisgICAgICAgICogdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAg
ICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisKIDIwMTItMDctMTEgIERhbmEgSmFuc2Vu
cyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW5hbWUgbGF5
ZXJSZWN0IHRvIGNvbnRlbnRSZWN0IGZvciByZWN0cyB0aGF0IGxpdmUgaW4gY29udGVudCBzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCBhNmIzNWZkOTM4ZThhMDg5MjdhNmNlMWNmOTc0NGQ3
MWU0YzRhNjMyLi40NjVkYzMxMmNkMTc0ZDVjZDdmZTMwNzA4MWVmNDBjMTdiNjM0MGE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vUGxhdGZvcm0uZ3lwaQpAQCAtNDMsNiArNDMsMTUgQEAKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJDb2xvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgnLAor
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVh
ZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9y
ZGVyUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklP
U3VyZmFjZVF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JRdWFkLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yU29saWRDb2xvclF1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb250ZW50TGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNv
bnRlbnRMYXllckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29v
a2llLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTAyYmJm
ZmE0MzI2MjdmOTRmMjVlYzVlZGEyOTJmODk5ZDFiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFk
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvckNoZWNrZXJi
b2FyZFF1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZF9oCisKKyNp
bmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yQ2hlY2tlcmJv
YXJkUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CitwdWJsaWM6CisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworI2VuZGlmCisKKyAgICBzdGF0aWMgY29uc3QgV2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3Np
dG9yUXVhZCopOworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJD
b21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworI2VuZGlmCit9OworCisjcHJhZ21hIHBh
Y2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZmNmZDRiNjVjMGY5ZjBhNDYwNjhhZjYwODg2YWYxNjM0ODYyYTA1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yRGVi
dWdCb3JkZXJRdWFkLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9z
aXRvckRlYnVnQm9yZGVyUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1
YWRfaAorCisjaW5jbHVkZSAiU2tDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFk
LmgiCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQp
CisKK2NsYXNzIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgOiBwdWJsaWMgV2ViQ29tcG9z
aXRvclF1YWQgeworcHVibGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IGNyZWF0ZShjb25zdCBX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNr
Q29sb3IsIGludCB3aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgY29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9yOyB9OworICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lk
dGg7IH0KKworICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKiBt
YXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFNrQ29sb3IsIGludCB3aWR0aCk7CisjZW5kaWYKKworICAgIFNrQ29sb3IgbV9jb2xvcjsKKyAg
ICBpbnQgbV93aWR0aDsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJ
T1N1cmZhY2VRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ3ZWIxY2JkMDE0NDczMzQyODkxMDdi
MjM2YWU5MWU0NGM1NGQyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZF9oCisjZGVmaW5lIFdl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFk
LmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgeworcHVi
bGljOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOworCisgICAg
V2ViQ29yZTo6SW50U2l6ZSBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZh
Y2VTaXplOyB9CisgICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1
cm4gbV9pb1N1cmZhY2VUZXh0dXJlSWQ7IH0KKyNlbmRpZgorCisgICAgc3RhdGljIGNvbnN0IFdl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRv
clF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29t
cG9zaXRvcklPU3VyZmFjZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSos
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpb1N1cmZh
Y2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpOworI2VuZGlmCisKKyAgICBXZWJT
aXplIG1faW9TdXJmYWNlU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZVRleHR1cmVJZDsK
K307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTJhZDBhZGFiZDhmMTY5Mzg4YmJhMzIxZjhiYWJhNDAzNzE3Zjc1OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaApA
QCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclF1YWRfaAorI2Rl
ZmluZSBXZWJDb21wb3NpdG9yUXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisvLyBXQVJOSU5HISBBbGwgV2ViQ29tcG9zaXRvclhZWlF1YWQgY2xhc3NlcyBtdXN0IHJl
bWFpbiBQT0RzIChwbGFpbiBvbGQgZGF0YSkuCisvLyBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSAi
c2VyaWFsaXphYmxlIiBieSBjb3B5aW5nIHRoZWlyIHJhdyBieXRlcywgc28gdGhleQorLy8gbXVz
dCBub3QgY29udGFpbiBhbnkgbm9uLWJpdC1jb3B5YWJsZSBtZW1iZXIgdmFyaWFibGVzIQorLy8K
Ky8vIEZ1cnRoZXJtb3JlLCB0aGUgY2xhc3MgbWVtYmVycyBuZWVkIHRvIGJlIHBhY2tlZCBzbyB0
aGV5IGFyZSBhbGlnbmVkCisvLyBwcm9wZXJseSBhbmQgZG9uJ3QgaGF2ZSBwYWRkaW5ncy9nYXBz
LCBvdGhlcndpc2UgbWVtb3J5IGNoZWNrIHRvb2xzCisvLyBsaWtlIFZhbGdyaW5kIHdpbGwgY29t
cGxhaW4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugd2hlbgorLy8gdHJhbnNmZXJy
aW5nIHRoZXNlIGNsYXNzZXMgb3ZlciB0aGUgd2lyZS4KKyNwcmFnbWEgcGFjayhwdXNoLCA0KQor
CisvLyBXZWJDb21wb3NpdG9yUXVhZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRyYXdpbmcg
YSBxdWFkLiBCZWNhdXNlIGRpZmZlcmVudAorLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVyZW50IGJp
dHMgb2YgcGVyLXF1YWQgZGF0YSB0byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUKKy8vIGZy
b20gV2ViQ29tcG9zaXRvclF1YWQgc3RvcmUgYWRkaXRpb25hbCBkYXRhIGluIHRoZWlyIGRlcml2
ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlhbAorLy8gZW51bSBpcyB1c2VkIHRvICJzYWZlbHkiIGRv
d25jYXN0IHRvIHRoZSBkZXJpdmVkIGNsYXNzLgorY2xhc3MgV2ViQ29tcG9zaXRvclF1YWQgewor
cHVibGljOgorICAgIGVudW0gTWF0ZXJpYWwgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBD
aGVja2VyYm9hcmQsCisgICAgICAgIERlYnVnQm9yZGVyLAorICAgICAgICBJT1N1cmZhY2VDb250
ZW50LAorICAgICAgICBSZW5kZXJQYXNzLAorICAgICAgICBUZXh0dXJlQ29udGVudCwKKyAgICAg
ICAgU29saWRDb2xvciwKKyAgICAgICAgVGlsZWRDb250ZW50LAorICAgICAgICBZVVZWaWRlb0Nv
bnRlbnQsCisgICAgICAgIFN0cmVhbVZpZGVvQ29udGVudCwKKyAgICB9OworCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29yZTo6SW50UmVjdCBxdWFkUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcXVhZFJlY3Q7IH0KKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
cXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJh
bnNmb3JtOyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+dmlzaWJsZUNvbnRlbnRSZWN0OyB9CisgICAg
V2ViQ29yZTo6SW50UmVjdCBzY2lzc29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVh
ZFN0YXRlLT5zY2lzc29yUmVjdDsgfQorICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eTsgfQorICAgIC8vIEZvciB0aGUgcHVycG9zZXMg
b2YgYmxlbmRpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIGFyZSBv
cGFxdWU/CisgICAgV2ViQ29yZTo6SW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3Q7CisgICAgYm9v
bCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8ICFvcGFx
dWVSZWN0KCkuY29udGFpbnMobV9xdWFkVmlzaWJsZVJlY3QpOyB9CisgICAgYm9vbCBpc0xheWVy
QXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlz
TGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQorCisgICAgLy8gQWxsb3dzIGNoYW5naW5nIHRo
ZSByZWN0IHRoYXQgZ2V0cyBkcmF3biB0byBtYWtlIGl0IHNtYWxsZXIuIFBhcmFtZXRlciBwYXNz
ZWQKKyAgICAvLyBpbiB3aWxsIGJlIGNsaXBwZWQgdG8gcXVhZFJlY3QoKS4KKyAgICB2b2lkIHNl
dFF1YWRWaXNpYmxlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgV2ViQ29yZTo6
SW50UmVjdCBxdWFkVmlzaWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRWaXNpYmxlUmVj
dDsgfQorICAgIGJvb2wgaXNEZWJ1Z1F1YWQoKSBjb25zdCB7IHJldHVybiBtX21hdGVyaWFsID09
IERlYnVnQm9yZGVyOyB9CisjZW5kaWYKKworICAgIE1hdGVyaWFsIG1hdGVyaWFsKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXRlcmlhbDsgfQorCisgICAgLy8gUmV0dXJucyB0cmFuc2ZlciBzaXplIG9m
IHRoaXMgb2JqZWN0IGJhc2VkIG9uIHRoZSBkZXJpdmVkIGNsYXNzIChieQorICAgIC8vIGxvb2tp
bmcgYXQgdGhlIG1hdGVyaWFsIHR5cGUpLgorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKKwor
ICAgIGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlOyB9CisgICAgdm9pZCBzZXRTaGFyZWRR
dWFkU3RhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKSB7IG1fc2hhcmVkUXVhZFN0YXRlID0gc2hhcmVkUXVhZFN0YXRlOyB9CisKK3Byb3RlY3Rl
ZDoKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb21wb3NpdG9yUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgTWF0ZXJpYWwsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKyNlbmRpZgorCisgICAgLy8gU3RvcmVzIHN0YXRlIGNvbW1vbiB0byBhIGxh
cmdlIGJ1bmRsZSBvZiBxdWFkczsga2VwdCBzZXBhcmF0ZSBmb3IgbWVtb3J5CisgICAgLy8gZWZm
aWNpZW5jeS4gVGhlcmUgaXMgc3BlY2lhbCB0cmVhdG1lbnQgdG8gcmVjb25zdHJ1Y3QgdGhlc2Ug
cG9pbnRlcnMKKyAgICAvLyBkdXJpbmcgc2VyaWFsaXphdGlvbi4KKyAgICBjb25zdCBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBtX3NoYXJlZFF1YWRTdGF0ZTsKKworICAgIE1hdGVyaWFs
IG1fbWF0ZXJpYWw7CisgICAgV2ViUmVjdCBtX3F1YWRSZWN0OworICAgIFdlYlJlY3QgbV9xdWFk
VmlzaWJsZVJlY3Q7CisKKyAgICAvLyBCeSBkZWZhdWx0LCB0aGUgc2hhcmVkIHF1YWQgc3RhdGUg
ZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHF1YWQgaXMKKyAgICAvLyBvcGFxdWUgb3Ig
bmVlZHMgYmxlbmRpbmcuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgd2l0aCB0aGVzZQor
ICAgIC8vIHZhcmlhYmxlcy4KKyAgICBib29sIG1fcXVhZE9wYXF1ZTsKKyAgICBib29sIG1fbmVl
ZHNCbGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQg
aXMgdXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJp
YWJsZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5
IGJlIHBhcnRpYWxseSBvcGFxdWUuCisgICAgV2ViUmVjdCBtX29wYXF1ZVJlY3Q7Cit9OworCisj
cHJhZ21hIHBhY2socG9wKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zN2M2ZDE4YWEyYTAwNzQ5YjUwZjQ3MjQ4ODhlZDVlZmJhM2YxOTdiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZV9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNlbmRpZgorI2luY2x1ZGUgIldlYlJlY3QuaCIKKyNpbmNsdWRlICJXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSB7CitwdWJsaWM6CisgICAgLy8gVHJhbnNmb3JtcyBmcm9tIHF1
YWQncyBvcmlnaW5hbCBjb250ZW50IHNwYWNlIHRvIGl0cyB0YXJnZXQgY29udGVudCBzcGFjZS4K
KyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtOworICAgIC8vIFRoaXMg
cmVjdCBsaXZlcyBpbiB0aGUgY29udGVudCBzcGFjZSBmb3IgdGhlIHF1YWQncyBvcmlnaW5hdGlu
ZyBsYXllci4KKyAgICBXZWJSZWN0IHZpc2libGVDb250ZW50UmVjdDsKKyAgICAvLyBUaGlzIHJl
Y3QgbGl2ZXMgaW4gdGhlIHF1YWQncyB0YXJnZXQgY29udGVudCBzcGFjZS4KKyAgICBXZWJSZWN0
IHNjaXNzb3JSZWN0OworICAgIGZsb2F0IG9wYWNpdHk7CisgICAgYm9vbCBvcGFxdWU7CisKKyAg
ICBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
PiBjcmVhdGUoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBi
b29sIG9wYXF1ZSk7CisgICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3Q7
CisjZW5kaWYKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMzEyMTBlMzUyMGU4N2M4NzlhNmU2NDNiOTlhNjUwZTU1OWIwZWNhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21w
b3NpdG9yU29saWRDb2xvclF1YWRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWRfaAorCisjaW5jbHVkZSAiU2tDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFk
LmgiCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQp
CisKK2NsYXNzIFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCA6IHB1YmxpYyBXZWJDb21wb3Np
dG9yUXVhZCB7CitwdWJsaWM6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkPiBjcmVhdGUoY29uc3QgV2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0Nv
bG9yKTsKKyNlbmRpZgorCisgICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3I7IH07CisKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKiBt
YXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKGNvbnN0
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
U2tDb2xvcik7CisjZW5kaWYKKworICAgIFNrQ29sb3IgbV9jb2xvcjsKK307CisKKyNwcmFnbWEg
cGFjayhwb3ApCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM2YTNjZWFiNGI2YzMzZjEzZDUzOWNiZmZkYmFmODExMTFmYTM1OGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JT
dHJlYW1WaWRlb1F1YWQuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkX2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVv
UXVhZF9oCisKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBXZWJDb21wb3NpdG9yU3RyZWFtVmlk
ZW9RdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yU3RyZWFt
VmlkZW9RdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4Jik7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9CisKKyAgICBzdGF0aWMg
Y29uc3QgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdl
YkNvbXBvc2l0b3JRdWFkKik7Citwcml2YXRlOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisjZW5kaWYKKworICAgIHVuc2lnbmVk
IG1fdGV4dHVyZUlkOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbWF0cml4OworfTsK
KworI3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliZTZmZDNlNmQzMTgyNmYyNTEyYTgwMjYzNzI3OWY0MzI3MjYwNjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JUZXh0dXJlUXVhZC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBv
c2l0b3JUZXh0dXJlUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZF9oCisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNlbmRp
ZgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgi
CisjaW5jbHVkZSAiV2ViRmxvYXRSZWN0LmgiCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVh
ZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CitwdWJsaWM6CisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
PiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhh
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKKyAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0KKyNl
bmRpZgorCisgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJl
SWQ7IH0KKyAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX3By
ZW11bHRpcGxpZWRBbHBoYTsgfQorICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxpcHBlZDsgfQorCisgICAgdm9pZCBzZXROZWVkc0JsZW5kaW5nKCk7CisKKyAgICBzdGF0aWMg
Y29uc3QgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29t
cG9zaXRvclF1YWQqKTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lk
LCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCk7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwor
ICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAgV2ViRmxvYXRSZWN0IG1fdXZSZWN0
OworICAgIGJvb2wgbV9mbGlwcGVkOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclRpbGVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JUaWxlUXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYTI1NWJiMjVkYTM3OGJiYWY0NTk5NjVl
NjIyZDQyM2UyOTc4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNvbXBvc2l0b3JUaWxlUXVhZF9oCisjZGVmaW5lIFdlYkNvbXBvc2l0b3JU
aWxlUXVhZF9oCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJXZWJD
b21wb3NpdG9yUXVhZC5oIgorI2luY2x1ZGUgIldlYlBvaW50LmgiCisjaW5jbHVkZSAiV2ViU2l6
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3MgV2ViQ29tcG9zaXRvclRpbGVRdWFkIDog
cHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKK3B1YmxpYzoKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IGNyZWF0
ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9m
ZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVy
ZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BF
ZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKworICAgIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlT2Zmc2V0OyB9CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXh0dXJlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZVNpemU7IH0KKyAgICBHQzNEaW50IHRleHR1cmVGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBtX3RleHR1cmVGaWx0ZXI7IH0KKyAgICBib29sIHN3aXp6bGVDb250ZW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3dpenpsZUNvbnRlbnRzOyB9CisKKyAgICBib29sIGxlZnRFZGdl
QUEoKSBjb25zdCB7IHJldHVybiBtX2xlZnRFZGdlQUE7IH0KKyAgICBib29sIHRvcEVkZ2VBQSgp
IGNvbnN0IHsgcmV0dXJuIG1fdG9wRWRnZUFBOyB9CisgICAgYm9vbCByaWdodEVkZ2VBQSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmlnaHRFZGdlQUE7IH0KKyAgICBib29sIGJvdHRvbUVkZ2VBQSgpIGNv
bnN0IHsgcmV0dXJuIG1fYm90dG9tRWRnZUFBOyB9CisKKyAgICBib29sIGlzQW50aWFsaWFzZWQo
KSBjb25zdCB7IHJldHVybiBsZWZ0RWRnZUFBKCkgfHwgdG9wRWRnZUFBKCkgfHwgcmlnaHRFZGdl
QUEoKSB8fCBib3R0b21FZGdlQUEoKTsgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgY29uc3QgV2Vi
Q29tcG9zaXRvclRpbGVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQq
KTsKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgIFdlYkNvbXBvc2l0
b3JUaWxlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJl
Y3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
dGV4dHVyZU9mZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0Rp
bnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwg
Ym9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKyNl
bmRpZgorCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBXZWJQb2ludCBt
X3RleHR1cmVPZmZzZXQ7CisgICAgV2ViU2l6ZSBtX3RleHR1cmVTaXplOworICAgIEdDM0RpbnQg
bV90ZXh0dXJlRmlsdGVyOworICAgIGJvb2wgbV9zd2l6emxlQ29udGVudHM7CisgICAgYm9vbCBt
X2xlZnRFZGdlQUE7CisgICAgYm9vbCBtX3RvcEVkZ2VBQTsKKyAgICBib29sIG1fcmlnaHRFZGdl
QUE7CisgICAgYm9vbCBtX2JvdHRvbUVkZ2VBQTsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzJmNzRlMjQ2YTg3M2U4MjY5MTE5MzVi
NjgwZjUyYzMwZjkxZjNhZi4uZTM4YmU5MmFkMjk0YTkyMTk1Y2Q2NzIyNTY3M2JhMGYzMWEzMmZk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODE5MSw2ICs4MTkxLDE1IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkF1
ZGlvQnVzLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJD
b21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1
YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRl
b1F1YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcCcsCkBAIC04MjgzLDE3ICs4Mjky
LDE0IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmlt
YXRpb25DdXJ2ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQW5pbWF0aW9uQ3VydmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1h
Z2VUcmFja2VyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEYW1hZ2VUcmFja2VyLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVn
UmVjdEhpc3RvcnkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCcsCi0gICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGb250QXRsYXMuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxhcy5o
JywKQEAgLTgzMDQsNyArODMxMCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCcsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oJywKQEAgLTgzNjgsMTkgKzgz
NzMsMTUgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NldHRpbmdzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVh
ZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCcsCkBAIC04MzkwLDcgKzgzOTEsNiBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
VGFzay5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZURyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hlY2tl
cmJvYXJkUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzBkYjJiODQy
NWJiZGYzMDk0MThkOWIwOTcyOGY5NmVlOGJiOWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hlY2tlcmJv
YXJkUXVhZC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25Q
dHI8V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ+IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9h
cmRRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QpKTsKK30KKworV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ6OldlYkNvbXBvc2l0
b3JDaGVja2VyYm9hcmRRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCisgICAgOiBXZWJDb21wb3Np
dG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQs
IHF1YWRSZWN0KQoreworfQorCitjb25zdCBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCog
V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21w
b3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJD
b21wb3NpdG9yUXVhZDo6Q2hlY2tlcmJvYXJkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQqPihxdWFkKTsKK30KKworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NzlmNmMxNGZlYTc4YWM5NzIzMTQyMmNlMzQ2N2QyOWM0NjBmZGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
RGVidWdCb3JkZXJRdWFkLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQ
YXNzT3duUHRyPFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IFdlYkNvbXBvc2l0b3JEZWJ1
Z0JvcmRlclF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBp
bnQgd2lkdGgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yRGVidWdC
b3JkZXJRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yLCB3aWR0aCkpOworfQor
CitXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkOjpXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJR
dWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKKyAgICA6
IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OkRl
YnVnQm9yZGVyLCBxdWFkUmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3IpCisgICAgLCBtX3dpZHRo
KHdpZHRoKQoreworICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOworICAgIGlmIChTa0NvbG9yR2V0
QShtX2NvbG9yKSA8IDI1NSkKKyAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKK30KKwor
Y29uc3QgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCogV2ViQ29tcG9zaXRvckRlYnVnQm9y
ZGVyUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQorewor
ICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0Jv
cmRlcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JEZWJ1Z0Jv
cmRlclF1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2EyOTMxNGRhZGRmOThkMWM4ODk1MTAzMWZiZTFh
ZTkxODBjODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1
YWQ+IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVy
ZUlkKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgaW9TdXJmYWNlU2l6ZSwgaW9TdXJmYWNlVGV4
dHVyZUlkKSk7Cit9CisKK1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkOjpXZWJDb21wb3NpdG9y
SU9TdXJmYWNlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZh
Y2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCisgICAgOiBXZWJDb21wb3NpdG9y
UXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50
LCBxdWFkUmVjdCkKKyAgICAsIG1faW9TdXJmYWNlU2l6ZShpb1N1cmZhY2VTaXplKQorICAgICwg
bV9pb1N1cmZhY2VUZXh0dXJlSWQoaW9TdXJmYWNlVGV4dHVyZUlkKQoreworfQorCitjb25zdCBX
ZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCogV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6Om1h
dGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQo
cXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6SU9TdXJmYWNlQ29udGVudCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFk
Kj4ocXVhZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2EwMmNhMGVhZmMzZmExN2JmODg4Mzg3M2I5ODBmNDBhZGZhMzBjNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clF1YWQuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+CisKKyNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBv
c2l0b3JTdHJlYW1WaWRlb1F1YWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNv
bXBvc2l0b3JRdWFkOjpXZWJDb21wb3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCkKKyAgICA6IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkK
KyAgICAsIG1fbWF0ZXJpYWwobWF0ZXJpYWwpCisgICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQor
ICAgICwgbV9xdWFkVmlzaWJsZVJlY3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRPcGFxdWUodHJ1
ZSkKKyAgICAsIG1fbmVlZHNCbGVuZGluZyhmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRR
dWFkU3RhdGUpOworICAgIEFTU0VSVChtX21hdGVyaWFsICE9IEludmFsaWQpOworfQorCitJbnRS
ZWN0IFdlYkNvbXBvc2l0b3JRdWFkOjpvcGFxdWVSZWN0KCkgY29uc3QKK3sKKyAgICBpZiAob3Bh
Y2l0eSgpICE9IDEpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgaWYgKG1fc2hhcmVk
UXVhZFN0YXRlLT5vcGFxdWUgJiYgbV9xdWFkT3BhcXVlKQorICAgICAgICByZXR1cm4gbV9xdWFk
UmVjdDsKKyAgICByZXR1cm4gbV9vcGFxdWVSZWN0OworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JR
dWFkOjpzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQor
eworICAgIEludFJlY3QgaW50ZXJzZWN0aW9uID0gcXVhZFZpc2libGVSZWN0OworICAgIGludGVy
c2VjdGlvbi5pbnRlcnNlY3QobV9xdWFkUmVjdCk7CisgICAgbV9xdWFkVmlzaWJsZVJlY3QgPSBp
bnRlcnNlY3Rpb247Cit9CisKK3Vuc2lnbmVkIFdlYkNvbXBvc2l0b3JRdWFkOjpzaXplKCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1hdGVyaWFsKCkpIHsKKyAgICBjYXNlIENoZWNrZXJib2FyZDoK
KyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCk7Cisg
ICAgY2FzZSBEZWJ1Z0JvcmRlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9y
RGVidWdCb3JkZXJRdWFkKTsKKyAgICBjYXNlIElPU3VyZmFjZUNvbnRlbnQ6CisgICAgICAgIHJl
dHVybiBzaXplb2YoV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQpOworICAgIGNhc2UgVGV4dHVy
ZUNvbnRlbnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
KTsKKyAgICBjYXNlIFNvbGlkQ29sb3I6CisgICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9z
aXRvclNvbGlkQ29sb3JRdWFkKTsKKyAgICBjYXNlIFRpbGVkQ29udGVudDoKKyAgICAgICAgcmV0
dXJuIHNpemVvZihXZWJDb21wb3NpdG9yVGlsZVF1YWQpOworICAgIGNhc2UgU3RyZWFtVmlkZW9D
b250ZW50OgorICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1
YWQpOworICAgIGNhc2UgSW52YWxpZDoKKyAgICBjYXNlIFJlbmRlclBhc3M6CisgICAgY2FzZSBZ
VVZWaWRlb0NvbnRlbnQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIENSQVNIKCk7Cisg
ICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yUXVhZCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5NWM0MGZi
NzI4ZjM4MzBhZWVjYzM5MmUxMTIxNjhjM2NhNjcxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oPgorCisj
aW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgorCit1c2lu
ZyBXZWJDb3JlOjpGbG9hdFF1YWQ7Cit1c2luZyBXZWJDb3JlOjpJbnRSZWN0OworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZTo6V2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSgpCisgICAgOiBvcGFjaXR5KDApCisgICAgLCBvcGFxdWUob3BhcXVl
KQoreworfQorCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU+IFdlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBj
b25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKHF1
YWRUcmFuc2Zvcm0sIHZpc2libGVDb250ZW50UmVjdCwgc2Npc3NvclJlY3QsIG9wYWNpdHksIG9w
YXF1ZSkpOworfQorCitXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjpXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNm
b3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIHNj
aXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKKyAgICA6IHF1YWRUcmFuc2Zv
cm0ocXVhZFRyYW5zZm9ybSkKKyAgICAsIHZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlQ29udGVu
dFJlY3QpCisgICAgLCBzY2lzc29yUmVjdChzY2lzc29yUmVjdCkKKyAgICAsIG9wYWNpdHkob3Bh
Y2l0eSkKKyAgICAsIG9wYXF1ZShvcGFxdWUpCit7Cit9CisKK2Jvb2wgV2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0Cit7CisgICAg
Ly8gTm90ZTogdGhpcyBkb2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0aW9uIG1hdHJp
Y2VzLgorICAgIC8vIEFzc3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5kIGhhdmUgaW50
ZWdlciBzY2FsZXMgYW5kIHRyYW5zbGF0aW9ucy4KKyAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsK
KyAgICBGbG9hdFF1YWQgcXVhZCA9IFdlYkNvcmU6OkNDTWF0aFV0aWw6Om1hcFF1YWQocXVhZFRy
YW5zZm9ybSwgRmxvYXRRdWFkKEludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KSksIGNsaXBwZWQp
OworICAgIHJldHVybiAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJv
dW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JT
b2xpZENvbG9yUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgyNDU4Yzcy
MjY1MGYwYWQyOGVlOWRhNTE1N2M0ODI1NzY0YWM1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29s
b3JRdWFkLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8
V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkPiBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6
OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQoc2hhcmVk
UXVhZFN0YXRlLCBxdWFkUmVjdCwgY29sb3IpKTsKK30KKworV2ViQ29tcG9zaXRvclNvbGlkQ29s
b3JRdWFkOjpXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBTa0NvbG9yIGNvbG9yKQorICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCisgICAgLCBt
X2NvbG9yKGNvbG9yKQoreworICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkKKyAg
ICAgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7CisgICAgZWxzZQorICAgICAgICBtX29wYXF1ZVJl
Y3QgPSBxdWFkUmVjdDsKK30KKworY29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKiBX
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3Np
dG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21w
b3NpdG9yUXVhZDo6U29saWRDb2xvcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdl
YkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTdHJl
YW1WaWRlb1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTI1N2FhZjdl
MzQxZGVjNDg0N2UwMzFmZGUwMDBkMjNmNjFjYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU3RyZWFtVmlk
ZW9RdWFkLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRy
PFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ+IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1
YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJl
Y3QsIHRleHR1cmVJZCwgbWF0cml4KSk7Cit9CisKK1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1
YWQ6OldlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5z
aWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQor
ICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVh
ZDo6U3RyZWFtVmlkZW9Db250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1fdGV4dHVyZUlkKHRleHR1
cmVJZCkKKyAgICAsIG1fbWF0cml4KG1hdHJpeCkKK3sKK30KKworY29uc3QgV2ViQ29tcG9zaXRv
clN0cmVhbVZpZGVvUXVhZCogV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZDo6bWF0ZXJpYWxD
YXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5t
YXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKj4o
cXVhZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNWY0NWZkYzRjYjJhNThmNzI4N2Y1ZmFjNWRjNTZiZGQyMzA0MDdiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4
dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3Qs
IGJvb2wgZmxpcHBlZCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JU
ZXh0dXJlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRp
cGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7Cit9CisKK1dlYkNvbXBvc2l0b3JUZXh0dXJl
UXVhZDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxv
YXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVj
dCkKKyAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fcHJlbXVsdGlwbGllZEFs
cGhhKHByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAsIG1fdXZSZWN0KHV2UmVjdCkKKyAgICAsIG1f
ZmxpcHBlZChmbGlwcGVkKQoreworfQorCit2b2lkIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6
c2V0TmVlZHNCbGVuZGluZygpCit7CisgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKK30KKwor
Y29uc3QgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQorewor
ICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJl
Q29udGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjdhYTc3NTA4MTc0MWIxMTQxOWI4MTE3Njg3YTk5NmFmOTJkMWNlYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVh
ZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBXZWJDb21wb3NpdG9yVGlsZVF1YWQ6
OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQs
IGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wg
c3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJp
Z2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdlYkNvbXBvc2l0b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVS
ZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVy
LCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJv
dHRvbUVkZ2VBQSkpOworfQorCitXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBvc2l0b3JU
aWxlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQs
IGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wg
c3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJp
Z2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKKyAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3Qp
CisgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCisgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4
dHVyZU9mZnNldCkKKyAgICAsIG1fdGV4dHVyZVNpemUodGV4dHVyZVNpemUpCisgICAgLCBtX3Rl
eHR1cmVGaWx0ZXIodGV4dHVyZUZpbHRlcikKKyAgICAsIG1fc3dpenpsZUNvbnRlbnRzKHN3aXp6
bGVDb250ZW50cykKKyAgICAsIG1fbGVmdEVkZ2VBQShsZWZ0RWRnZUFBKQorICAgICwgbV90b3BF
ZGdlQUEodG9wRWRnZUFBKQorICAgICwgbV9yaWdodEVkZ2VBQShyaWdodEVkZ2VBQSkKKyAgICAs
IG1fYm90dG9tRWRnZUFBKGJvdHRvbUVkZ2VBQSkKK3sKKyAgICBpZiAoaXNBbnRpYWxpYXNlZCgp
KQorICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9w
YXF1ZVJlY3Q7Cit9CisKK2NvbnN0IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCogV2ViQ29tcG9zaXRv
clRpbGVRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit7
CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVk
Q29udGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUaWxl
UXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAppbmRleCBkY2FkOWYwMGYyZGM0ZWUzZDgwZmI3MzQ3MWFlNzljMzFiZTYzYTUwLi5lNzU5ZjVj
OGU3Mzk5NzA3ZjZkZWUxMjhmYzgxNmRlMjVhMGY5N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQ3LDI0ICs0NywxNSBAQAogI2luY2x1ZGUgIlRocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERy
YXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCi0jaW5jbHVk
ZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKICNpbmNsdWRl
ICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCi0jaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1lV
VlZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmlkZW9GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgpAQCAtNDE0LDcgKzQwNSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0CiAg
ICAgICAgIGRyYXdRdWFkKGl0LT5nZXQoKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQp
CiB7CiAgICAgSW50UmVjdCBzY2lzc29yUmVjdCA9IHF1YWQtPnNjaXNzb3JSZWN0KCk7CiAKQEAg
LTQzMCwzNSArNDIxLDM1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChj
b25zdCBDQ0RyYXdRdWFkKiBxdWFkKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAgICBzd2l0Y2ggKHF1YWQt
Pm1hdGVyaWFsKCkpIHsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkludmFsaWQ6CisgICAgY2FzZSBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpDaGVja2VyYm9h
cmQ6Ci0gICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKHF1YWQtPnRvQ2hlY2tlcmJvYXJkRHJh
d1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9h
cmQ6CisgICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6
Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVh
ZDo6RGVidWdCb3JkZXI6Ci0gICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQocXVhZC0+dG9EZWJ1
Z0JvcmRlckRyYXdRdWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
RGVidWdCb3JkZXI6CisgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQoQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEND
RHJhd1F1YWQ6OklPU3VyZmFjZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdJT1N1cmZhY2VRdWFkKHF1
YWQtPnRvSU9TdXJmYWNlRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50OgorICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChDQ0lP
U3VyZmFjZURyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENDRHJhd1F1YWQ6OlJlbmRlclBhc3M6Ci0gICAgICAgIGRyYXdSZW5kZXJQYXNzUXVh
ZChxdWFkLT50b1JlbmRlclBhc3NEcmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQ6OlJlbmRlclBhc3M6CisgICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yOgotICAgICAgICBkcmF3U29saWRDb2xvclF1
YWQocXVhZC0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yOgorICAgICAgICBkcmF3U29saWRDb2xvclF1YWQoV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6U3RyZWFtVmlkZW9Db250ZW50Ogot
ICAgICAgICBkcmF3U3RyZWFtVmlkZW9RdWFkKHF1YWQtPnRvU3RyZWFtVmlkZW9EcmF3UXVhZCgp
KTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVhbVZpZGVvQ29udGVu
dDoKKyAgICAgICAgZHJhd1N0cmVhbVZpZGVvUXVhZChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1h
dGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6
VGV4dHVyZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdUZXh0dXJlUXVhZChxdWFkLT50b1RleHR1cmVE
cmF3UXVhZCgpKTsKKyAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVD
b250ZW50OgorICAgICAgICBkcmF3VGV4dHVyZVF1YWQoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50OgotICAgICAgICBkcmF3VGlsZVF1YWQocXVhZC0+dG9U
aWxlRHJhd1F1YWQoKSk7CisgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUaWxl
ZENvbnRlbnQ6CisgICAgICAgIGRyYXdUaWxlUXVhZChDQ1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpZVVZWaWRl
b0NvbnRlbnQ6Ci0gICAgICAgIGRyYXdZVVZWaWRlb1F1YWQocXVhZC0+dG9ZVVZWaWRlb0RyYXdR
dWFkKCkpOworICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250
ZW50OgorICAgICAgICBkcmF3WVVWVmlkZW9RdWFkKENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJp
YWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaAppbmRleCA2YWZlNjY4MDZjZTk4MWY0YjNlMDA4ZTc5ODY2NmE1MmEw
OWRkOWFiLi40MTU1MjBkN2ZkOWU5MzgxZTY1ZTUwM2ZhOWI3M2ZiNWY5ZDk4Y2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsMTYgQEAKICNpbmNsdWRl
ICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNp
bmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ0NoZWNr
ZXJib2FyZERyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgi
CisjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgorI2luY2x1ZGUg
ImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJj
Yy9DQ1RpbGVEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDYs
MTcgKzU1LDcgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKLWNsYXNzIENDRGVidWdCb3Jk
ZXJEcmF3UXVhZDsKLWNsYXNzIENDRHJhd1F1YWQ7Ci1jbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFk
OwotY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ7CiBjbGFzcyBDQ1Njb3BlZFRleHR1cmU7Ci1j
bGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKLWNsYXNzIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsK
LWNsYXNzIENDVGV4dHVyZURyYXdRdWFkOwotY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBD
Q1lVVlZpZGVvRHJhd1F1YWQ7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7CiBjbGFzcyBTY29wZWRF
bnN1cmVGcmFtZWJ1ZmZlckFsbG9jYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZTAzMzUx
NGE2ODQ2YWI5ZjRjYjFmY2IxYjk2MTU4ZmYyZDAyM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NP
d25QdHI8Q0NDaGVja2VyYm9hcmREcmF3UXVhZD4gQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0KSk7Ci19Ci0KLUNDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCi0gICAgOiBDQ0RyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkLCBxdWFkUmVjdCkK
LXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCmluZGV4
IDI3ZjhjNTZiZDQ5YzQ1ZTMwNTVhM2ZhN2NiNmU3YTcyNWU1ZjQzZjEuLjM1MTA0ZGNmNWIzYzdl
OWYyZjg1NWI1ZjIyMDVhNjFjMWI2YjljN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJi
b2FyZERyYXdRdWFkLmgKQEAgLTI2LDIwICsyNiwxMCBAQAogI2lmbmRlZiBDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkX2gKICNkZWZpbmUgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCiAKLSNpbmNsdWRl
ICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1
YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOwot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKLQotcHJpdmF0
ZToKLSAgICBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYpOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JDaGVj
a2VyYm9hcmRRdWFkIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1
Z0JvcmRlckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE1MjdjNDdjNTU3NmY5NmFjN2YzOTk5Y2MwN2ExZDUwZDEzZmI2N2UuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1QYXNzT3duUHRyPENDRGVidWdCb3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLXsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDRGVidWdCb3JkZXJEcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBjb2xvciwgd2lkdGgpKTsKLX0KLQotQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3
aWR0aCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpEZWJ1
Z0JvcmRlciwgcXVhZFJlY3QpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV93aWR0aCh3
aWR0aCkKLXsKLSAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAoU2tDb2xvckdldEEo
bV9jb2xvcikgPCAyNTUpCi0gICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKaW5kZXggZWExY2Y4NDc2MDQx
ZDFiMTcyZTZjMDI2YzdmNzg2MjgxYWNlNDRmNC4uYTcyYzI3NDE3NmEwNmEzNjQyZjIxNjgwY2E1
NDcyNTBhMjJhMWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
MjcgKzI2LDEwIEBACiAjaWZuZGVmIENDRGVidWdCb3JkZXJEcmF3UXVhZF9oCiAjZGVmaW5lIEND
RGVidWdCb3JkZXJEcmF3UXVhZF9oCiAKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKTsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ+IGNyZWF0ZShj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lk
dGgpOwotCi0gICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0g
ICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotCi1wcml2YXRlOgotICAg
IENDRGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IElu
dFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwotCi0gICAgU2tDb2xvciBtX2NvbG9yOwotICAg
IGludCBtX3dpZHRoOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JEZWJ1Z0Jv
cmRlclF1YWQgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3
UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY1NjIxZGI1MzZkZGE1
Zjk1ZjI1YjAzYjcyYzFmMmI5ZjYxODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLQotI2lu
Y2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCi0j
aW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1NvbGlk
Q29sb3JEcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgot
I2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJh
d1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1DQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCkKLSAgICA6IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKLSAgICAs
IG1fbWF0ZXJpYWwobWF0ZXJpYWwpCi0gICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQotICAgICwg
bV9xdWFkVmlzaWJsZVJlY3QocXVhZFJlY3QpCi0gICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKLSAg
ICAsIG1fbmVlZHNCbGVuZGluZyhmYWxzZSkKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3Rh
dGUpOwotICAgIEFTU0VSVChtX21hdGVyaWFsICE9IEludmFsaWQpOwotfQotCi1JbnRSZWN0IEND
RHJhd1F1YWQ6Om9wYXF1ZVJlY3QoKSBjb25zdAotewotICAgIGlmIChvcGFjaXR5KCkgIT0gMSkK
LSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlz
T3BhcXVlKCkgJiYgbV9xdWFkT3BhcXVlKQotICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKLSAg
ICByZXR1cm4gbV9vcGFxdWVSZWN0OwotfQotCi12b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNp
YmxlUmVjdChjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCi17Ci0gICAgbV9xdWFkVmlz
aWJsZVJlY3QgPSBxdWFkVmlzaWJsZVJlY3Q7Ci0gICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50ZXJz
ZWN0KG1fcXVhZFJlY3QpOwotfQotCi1jb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0Ry
YXdRdWFkOjp0b0NoZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9t
YXRlcmlhbCA9PSBDaGVja2VyYm9hcmQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBD
Q0NoZWNrZXJib2FyZERyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDRGVidWdCb3JkZXJE
cmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQobV9tYXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcik7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ0lP
U3VyZmFjZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFjZURyYXdRdWFkKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBJT1N1cmZhY2VDb250ZW50KTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCo+KHRoaXMpOwotfQotCi1j
b25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1
YWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclBhc3MpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHRoaXMpOwot
fQotCi1jb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9y
RHJhd1F1YWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFNvbGlkQ29sb3Ip
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCo+KHRo
aXMpOwotfQotCi1jb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU3Ry
ZWFtVmlkZW9EcmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gU3Ry
ZWFtVmlkZW9Db250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NTdHJlYW1W
aWRlb0RyYXdRdWFkKj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBDQ0Ry
YXdRdWFkOjp0b1RleHR1cmVEcmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJp
YWwgPT0gVGV4dHVyZUNvbnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1Rl
eHR1cmVEcmF3UXVhZCo+KHRoaXMpOwotfQotY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDRHJhd1F1
YWQ6OnRvVGlsZURyYXdRdWFkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBU
aWxlZENvbnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RpbGVEcmF3UXVh
ZCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRv
WVVWVmlkZW9EcmF3UXVhZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gWVVW
VmlkZW9Db250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NZVVZWaWRlb0Ry
YXdRdWFkKj4odGhpcyk7Ci19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDkxMzZiNTQ0
OGI1Y2Q0ZjlhY2JjZDFlY2YyYzBlN2IwMTZiNWNkOTYuLjVmNTM2YTg1YTQwNTZmMDZiYTgwNDdh
YWM0ZjdjZjNiYTFjOTc5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOTAgKzI2LDEwIEBACiAjaWZu
ZGVmIENDRHJhd1F1YWRfaAogI2RlZmluZSBDQ0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0ND
U2hhcmVkUXVhZFN0YXRlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsK
LWNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKLWNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7
Ci1jbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZDsKLWNsYXNzIENDU29saWRDb2xvckRyYXdRdWFk
OwotY2xhc3MgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOwotY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7
Ci1jbGFzcyBDQ1RpbGVEcmF3UXVhZDsKLWNsYXNzIENDWVVWVmlkZW9EcmF3UXVhZDsKLQotLy8g
Q0NEcmF3UXVhZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9yIGRyYXdpbmcgYSBxdWFkLiBCZWNh
dXNlIGRpZmZlcmVudAotLy8gbWF0ZXJpYWxzIG5lZWQgZGlmZmVyZW50IGJpdHMgb2YgcGVyLXF1
YWQgZGF0YSB0byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJpdmUKLS8vIGZyb20gQ0NEcmF3UXVh
ZCBzdG9yZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlaXIgZGVyaXZlZCBpbnN0YW5jZS4gVGhlIE1h
dGVyaWFsCi0vLyBlbnVtIGlzIHVzZWQgdG8gInNhZmVseSIgdXBjYXN0IHRvIHRoZSBkZXJpdmVk
IGNsYXNzLgotY2xhc3MgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NE
cmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3F1YWRSZWN0OyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5xdWFkVHJhbnNmb3JtKCk7IH0KLSAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7IH0KLSAgICBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkUXVhZFN0YXRlLT5zY2lzc29yUmVjdCgpOyB9Ci0gICAgZmxvYXQgb3BhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5vcGFjaXR5KCk7IH0KLSAgICAvLyBGb3Ig
dGhlIHB1cnBvc2VzIG9mIGJsZW5kaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9mIHRo
aXMgcXVhZCBhcmUgb3BhcXVlPwotICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNvbnN0OwotICAg
IGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCAh
b3BhcXVlUmVjdCgpLmNvbnRhaW5zKG1fcXVhZFZpc2libGVSZWN0KTsgfQotICAgIGJvb2wgaXNM
YXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KLQotICAgIC8vIEFsbG93cyBjaGFuZ2lu
ZyB0aGUgcmVjdCB0aGF0IGdldHMgZHJhd24gdG8gbWFrZSBpdCBzbWFsbGVyLiBQYXJhbWV0ZXIg
cGFzc2VkCi0gICAgLy8gaW4gd2lsbCBiZSBjbGlwcGVkIHRvIHF1YWRSZWN0KCkuCi0gICAgdm9p
ZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIGNvbnN0IEludFJlY3Qm
IHF1YWRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFZpc2libGVSZWN0OyB9Ci0K
LSAgICBlbnVtIE1hdGVyaWFsIHsKLSAgICAgICAgSW52YWxpZCwKLSAgICAgICAgQ2hlY2tlcmJv
YXJkLAotICAgICAgICBEZWJ1Z0JvcmRlciwKLSAgICAgICAgSU9TdXJmYWNlQ29udGVudCwKLSAg
ICAgICAgUmVuZGVyUGFzcywKLSAgICAgICAgVGV4dHVyZUNvbnRlbnQsCi0gICAgICAgIFNvbGlk
Q29sb3IsCi0gICAgICAgIFRpbGVkQ29udGVudCwKLSAgICAgICAgWVVWVmlkZW9Db250ZW50LAot
ICAgICAgICBTdHJlYW1WaWRlb0NvbnRlbnQsCi0gICAgfTsKLQotICAgIE1hdGVyaWFsIG1hdGVy
aWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsgfQotICAgIGJvb2wgaXNEZWJ1Z1F1YWQo
KSBjb25zdCB7IHJldHVybiBtX21hdGVyaWFsID09IERlYnVnQm9yZGVyOyB9Ci0KLSAgICBjb25z
dCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiB0b0NoZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3Q7
Ci0gICAgY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiB0b0RlYnVnQm9yZGVyRHJhd1F1YWQo
KSBjb25zdDsKLSAgICBjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiB0b0lPU3VyZmFjZURyYXdR
dWFkKCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHRvUmVuZGVyUGFz
c0RyYXdRdWFkKCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHRvU29s
aWRDb2xvckRyYXdRdWFkKCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
KiB0b1N0cmVhbVZpZGVvRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ1RleHR1cmVEcmF3
UXVhZCogdG9UZXh0dXJlRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ1RpbGVEcmF3UXVh
ZCogdG9UaWxlRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQq
IHRvWVVWVmlkZW9EcmF3UXVhZCgpIGNvbnN0OwotCi0gICAgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlOyB9
Ci0KLXByb3RlY3RlZDoKLSAgICBDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
TWF0ZXJpYWwsIGNvbnN0IEludFJlY3QmKTsKLQotICAgIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBtX3NoYXJlZFF1YWRTdGF0ZTsKLQotICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7Ci0gICAgSW50
UmVjdCBtX3F1YWRSZWN0OwotICAgIEludFJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7Ci0KLSAgICAv
LyBCeSBkZWZhdWx0LCB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9y
IG5vdCB0aGlzIHF1YWQgaXMKLSAgICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2
ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgd2l0aCB0aGVzZQotICAgIC8vIHZhcmlhYmxlcy4KLSAg
ICBib29sIG1fcXVhZE9wYXF1ZTsKLSAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKLQotICAgIC8v
IEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFy
ZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKLSAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQg
dGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUu
Ci0gICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7Ci19OwotCit0eXBlZGVmIFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQgQ0NEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9T
dXJmYWNlRHJhd1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmRiNGVm
Y2JhYWM2MDAyMzJkZWU0YzRiMjZjMDk4OTZmMzM1ZWY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0ND
SU9TdXJmYWNlRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRy
PENDSU9TdXJmYWNlRHJhd1F1YWQ+IENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVy
ZUlkKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NJT1N1cmZhY2VEcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBpb1N1cmZhY2VTaXplLCBpb1N1cmZhY2VUZXh0dXJlSWQp
KTsKLX0KLQotQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1cmZhY2VEcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVy
ZUlkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OklPU3Vy
ZmFjZUNvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV9pb1N1cmZhY2VTaXplKGlvU3VyZmFjZVNp
emUpCi0gICAgLCBtX2lvU3VyZmFjZVRleHR1cmVJZChpb1N1cmZhY2VUZXh0dXJlSWQpCi17Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaAppbmRleCAyN2Y4NjNlZTYx
MzBjMDhjNTI1MzIzYTIyMTVkMzQxZjk5ZThiYTAxLi43N2QzMjZjYmQwZDg4NGJjZDBiMmZjMDg3
MTIwMGJiYjZiNzc3YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oCkBA
IC0yNiwyNiArMjYsMTAgQEAKICNpZm5kZWYgQ0NJT1N1cmZhY2VEcmF3UXVhZF9oCiAjZGVmaW5l
IENDSU9TdXJmYWNlRHJhd1F1YWRfaAogCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JJ
T1N1cmZhY2VRdWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NJT1N1cmZh
Y2VEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ0lPU3VyZmFjZURyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
Q0lPU3VyZmFjZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJm
YWNlVGV4dHVyZUlkKTsKLQotICAgIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUoKSBjb25z
dCB7IHJldHVybiBtX2lvU3VyZmFjZVNpemU7IH0KLSAgICB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0
dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX2lvU3VyZmFjZVRleHR1cmVJZDsgfQotCi1wcml2YXRl
OgotICAgIENDSU9TdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJm
YWNlVGV4dHVyZUlkKTsKLQotICAgIEludFNpemUgbV9pb1N1cmZhY2VTaXplOwotICAgIHVuc2ln
bmVkIG1faW9TdXJmYWNlVGV4dHVyZUlkOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkIENDSU9TdXJmYWNlRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKaW5kZXggNzJiMGRhYTJhNTI1MWU0NTU0MzJkM2M0ODg3OGYwN2M4OTRl
ODA1Ny4uMmI5YTQ5YmQzMDM2ZmRmZjRiOGM5NzFkNjJmMDMxOWQ1Njc4MTM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgImNjL0NDUmVuZGVyU3VyZmFjZS5oIgorI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRl
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CkBAIC00OCw3ICs0OSw2IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xhc3MgQ0NSZW5kZXJlcjsKLWNsYXNz
IENDU2hhcmVkUXVhZFN0YXRlOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NMYXll
ckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaAppbmRleCA0N2FlMmY3NDdlOGRkMDdhNTRlYjBiMmM4ZTQ2MmFlYjBhNTc4
YWVlLi42MTAwMTQ1Yjg3NDFhNWQxOWIxYWQ2YTgxOWU1ZGQ5YmQxODc5ZjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaApAQCAtMjcsMTYgKzI3LDE2IEBACiAjZGVmaW5lIENDUmVuZGVyUGFzc19o
CiAKICNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVh
ZFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NEcmF3UXVhZDsKIGNsYXNz
IENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwotY2xhc3MgQ0NTaGFyZWRRdWFk
U3RhdGU7CiAKIC8vIEEgbGlzdCBvZiBDQ0RyYXdRdWFkIG9iamVjdHMsIHNvcnRlZCBpbnRlcm5h
bGx5IGluIGZyb250LXRvLWJhY2sgb3JkZXIuCiBjbGFzcyBDQ1F1YWRMaXN0IDogcHVibGljIFZl
Y3RvcjxPd25QdHI8Q0NEcmF3UXVhZD4gPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5jcHAKaW5kZXggMDU3NTVhNjI5NDBjZTk0ZTY5NTE5NjhlOTU4NGNhNjAxNmIzZDYw
Ny4uNjYwODg5YmM0M2YxNWQyMGQwNTZmODk3MzAxOWUxMTNjMDNjZTk0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
RHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAtMjksMTQgKzI5LDE2IEBACiAKICNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKIAordXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzc0Ry
YXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1Jl
bmRlclBhc3MqIHJlbmRlclBhc3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
YmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQorUGFzc093blB0cjxDQ1JlbmRlclBhc3NE
cmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2Es
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzLCBpc1JlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRl
cnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSkpOwogfQogCi1DQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1Jl
cGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zv
cm0sIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFz
a1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUp
CitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGJvb2wgaXNS
ZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNm
b3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1h
c2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1l
KQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJlbmRlclBh
c3MsIHF1YWRSZWN0KQogICAgICwgbV9yZW5kZXJQYXNzKHJlbmRlclBhc3MpCiAgICAgLCBtX3Jl
bmRlclBhc3NJZChyZW5kZXJQYXNzLT5pZCgpKQpAQCAtNTAsNCArNTIsMTAgQEAgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3QKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzKTsKIH0KIAorY29uc3QgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQqIENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29u
c3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+
bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6UmVuZGVyUGFzcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKj4ocXVhZCk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCmluZGV4IDZhOTAwOTBiNzEyZDE2
MzMzMTE0YTRlOGIwYjYwYmJmMmU3MmM1N2IuLjQxNmJkMzRlMzM5MzNkZDZiMTI1NzM1MDFlNzE4
MmI1MWQwNTc0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAt
MjYsNyArMjYsNyBAQAogI2lmbmRlZiBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAjZGVmaW5lIEND
UmVuZGVyUGFzc0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmls
dGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0zNSwxMCArMzUsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1JlbmRlclBhc3M7CiAKLWNsYXNzIENDUmVuZGVy
UGFzc0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworY2xhc3MgQ0NSZW5kZXJQYXNzRHJh
d1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxp
Y2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBh
c3MqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFz
a1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUp
OwogCiAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKCkgY29uc3QgeyByZXR1cm4g
bV9yZW5kZXJQYXNzOyB9CiAgICAgaW50IHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyUGFzc0lkOyB9CkBAIC01Miw4ICs1Miw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
cnM7IH0KICAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRG
aWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQogCisgICAgc3Rh
dGljIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToKLSAgICBDQ1JlbmRlclBhc3NEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRl
clBhc3MqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3Qg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQg
bWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJh
bWUpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBi
b29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAg
ICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX3JlbmRlclBhc3M7CiAgICAgaW50IG1fcmVuZGVyUGFz
c0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA4OTRlYTVhZWEyZWZhZWU2YmNm
MDE1YjM4MGUwMzEyMjMzNGE5ZDcyLi4wNjhhNDEwNmJiZjIxY2RhNWU5YzQ2NmRjNDNkNzZiMDRm
M2YwYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMzEsNiArMzEsNyBAQAog
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
ImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJh
dGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQxLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOwogY2xh
c3MgQ0NSZW5kZXJQYXNzOwotY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBDQ0xheWVy
SW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRleHRTdHJlYW07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NoYXJlZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQzZjM4ZjAzYjlhZWQyZmQyMjAzODgxOWUwYTg3M2QwMjBhYWY5YzEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCi0KLSNpbmNsdWRlICJjYy9DQ01hdGhVdGls
LmgiCi0KLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFk
U3RhdGU6OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9y
bSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lz
c29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1NoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCB2aXNpYmxlQ29udGVudFJl
Y3QsIHNjaXNzb3JSZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKLX0KLQotQ0NTaGFyZWRRdWFkU3Rh
dGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFk
VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJl
Y3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKLSAgICA6IG1fcXVh
ZFRyYW5zZm9ybShxdWFkVHJhbnNmb3JtKQotICAgICwgbV92aXNpYmxlQ29udGVudFJlY3Qodmlz
aWJsZUNvbnRlbnRSZWN0KQotICAgICwgbV9zY2lzc29yUmVjdChzY2lzc29yUmVjdCkKLSAgICAs
IG1fb3BhY2l0eShvcGFjaXR5KQotICAgICwgbV9vcGFxdWUob3BhcXVlKQotewotfQotCi1ib29s
IENDU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QKLXsK
LSAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93IG9yIHByb2plY3Rpb24g
bWF0cmljZXMuCi0gICAgLy8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRob25vcm1hbCBhbmQgaGF2
ZSBpbnRlZ2VyIHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgotICAgIGJvb2wgY2xpcHBlZCA9IGZh
bHNlOwotICAgIEZsb2F0UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNm
b3JtKCksIEZsb2F0UXVhZCh2aXNpYmxlQ29udGVudFJlY3QoKSksIGNsaXBwZWQpOwotICAgIHJl
dHVybiAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94
KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRR
dWFkU3RhdGUuaAppbmRleCAyMzdjM2RhY2ViZjVjMGViZjI5Njg2N2Q4M2Y3ODkwYWVlOWU3NGM4
Li43OTAzNmRkZDRkODZlZDM1OWEyMTk3ZWY4NTI0M2EzYTJhM2M1NDQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2hhcmVkUXVhZFN0YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsMzkgKzI2LDEwIEBACiAjaWZuZGVmIENDU2hhcmVkUXVhZFN0
YXRlX2gKICNkZWZpbmUgQ0NTaGFyZWRRdWFkU3RhdGVfaAogCi0jaW5jbHVkZSAiRmxvYXRRdWFk
LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NTaGFyZWRRdWFkU3RhdGUpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25z
dCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOwotCi0g
ICAgLy8gVHJhbnNmb3JtcyBmcm9tIGNvbnRlbnQgc3BhY2UgZm9yIHRoZSBxdWFkIHRvIHRoZSBx
dWFkJ3MgdGFyZ2V0IGNvbnRlbnQgc3BhY2UuCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFRyYW5z
Zm9ybTsgfQotICAgIC8vIFRoaXMgcmVjdCBsaXZlcyBpbiB0aGUgY29udGVudCBzcGFjZSBmb3Ig
dGhlIHF1YWQncyBvcmlnaW5hdGluZyBsYXllci4KLSAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxl
Q29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVDb250ZW50UmVjdDsgfQotICAg
IC8vIFRoaXMgcmVjdCBsaXZlcyBpbiB0aGUgcXVhZCdzIHRhcmdldCBjb250ZW50IHNwYWNlLgot
ICAgIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zY2lzc29y
UmVjdDsgfQotCi0gICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsg
fQotICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQotICAgIGJv
b2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEND
U2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1
YWRUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50
UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKLQotICAgIFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9xdWFkVHJhbnNmb3JtOwotICAgIEludFJl
Y3QgbV92aXNpYmxlQ29udGVudFJlY3Q7Ci0gICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0OwotICAg
IGZsb2F0IG1fb3BhY2l0eTsKLSAgICBib29sIG1fb3BhcXVlOwotfTsKLQordHlwZWRlZiBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgQ0NTaGFyZWRRdWFkU3RhdGU7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY4MzY5YjY5YjcwOTZlYWMzMjVhMGY4MTQ5ZmY4MDAw
ZmViOWY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRy
YXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+IEND
U29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NvbGlkQ29sb3JEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCBjb2xvcikpOwotfQotCi1DQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xp
ZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCi0gICAgOiBDQ0RyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCi0gICAg
LCBtX2NvbG9yKGNvbG9yKQotewotICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkK
LSAgICAgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBtX29wYXF1
ZVJlY3QgPSBxdWFkUmVjdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdR
dWFkLmgKaW5kZXggODNlYTM0MDY2MTU3MDEwZjBkMTI5MmU4ZTE1NjMzY2UyYTE3M2ViMS4uYjZj
MGVlMDI1ZWEzYWUyYmJjYWFkNzM4NWZjZWJiYzNjYTY5Zjk2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JEcmF3UXVhZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDI1ICsyNiwxMCBAQAogI2lmbmRlZiBDQ1NvbGlkQ29sb3JE
cmF3UXVhZF9oCiAjZGVmaW5lIENDU29saWRDb2xvckRyYXdRdWFkX2gKIAotI2luY2x1ZGUgIlNr
Q29sb3IuaCIKLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQgOiBw
dWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTb2xpZENvbG9y
RHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU29saWRDb2xvckRy
YXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
U2tDb2xvcik7Ci0KLSAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsg
fTsKLQotcHJpdmF0ZToKLSAgICBDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yKTsKLQotICAgIFNrQ29sb3IgbV9jb2xv
cjsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQgQ0NT
b2xpZENvbG9yRHJhd1F1YWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFt
VmlkZW9EcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMWJhMjk5
MjNmNmQwZTAzMTg2NWUzYTU0MmE4NGIxNDBlMDhhNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9D
Q1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3du
UHRyPENDU3RyZWFtVmlkZW9EcmF3UXVhZD4gQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpjcmVhdGUo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTdHJlYW1W
aWRlb0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgbWF0cml4
KSk7Ci19Ci0KLUNDU3RyZWFtVmlkZW9EcmF3UXVhZDo6Q0NTdHJlYW1WaWRlb0RyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkKLSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0Ry
YXdRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV90ZXh0dXJlSWQo
dGV4dHVyZUlkKQotICAgICwgbV9tYXRyaXgobWF0cml4KQotewotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCmluZGV4IDMwMzczNDhkMzU0ZjZlYjdlOTc4YTU0
ZTVjODdhNmQ2ZDQ2MjBiNmUuLmExODkwNjExYTQ0MWQyZGI4YTI0Njc2ZDM4Zjg1ZDM4NGVkZWRk
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oCkBAIC0yNiwyNyAr
MjYsMTAgQEAKICNpZm5kZWYgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NTdHJl
YW1WaWRlb0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRl
IDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkIDog
cHVibGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU3RyZWFtVmlk
ZW9EcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTdHJlYW1WaWRl
b0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4Jik7Ci0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVJZDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NTdHJlYW1W
aWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVu
c2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
OwotCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX21hdHJpeDsKLX07Ci0KK3R5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9y
U3RyZWFtVmlkZW9RdWFkIENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJkYmNhOTVmYmU4ZTYxODFkNjM5MjYxOTEzZDE0ZGUxMmIyOWM5ZDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1
ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFz
c093blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3Qg
RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGV4dHVyZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJ
ZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKLX0KLQotQ0NUZXh0dXJl
RHJhd1F1YWQ6OkNDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBm
bGlwcGVkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRl
eHR1cmVDb250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAg
ICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAsIG1fdXZS
ZWN0KHV2UmVjdCkKLSAgICAsIG1fZmxpcHBlZChmbGlwcGVkKQotewotfQotCi12b2lkIENDVGV4
dHVyZURyYXdRdWFkOjpzZXROZWVkc0JsZW5kaW5nKCkKLXsKLSAgICBtX25lZWRzQmxlbmRpbmcg
PSB0cnVlOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaAppbmRleCBhNGJh
ZWZhMTMzYWY0YTAyMTNlOGU1ZjdmOTFkYzkyYWEwZDQzYTg2Li4yOGMzZDkxMzJmYjU4ZDhkYTEy
MGNjZjljMTU5YzE3MzQ1MTBkODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgK
QEAgLTI2LDMyICsyNiwxMCBAQAogI2lmbmRlZiBDQ1RleHR1cmVEcmF3UXVhZF9oCiAjZGVmaW5l
IENDVGV4dHVyZURyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1RleHR1cmVEcmF3
UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Rl
eHR1cmVEcmF3UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUZXh0dXJl
RHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9h
dFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKLQotICAgIHVuc2lnbmVkIHRleHR1cmVJZCgp
IGNvbnN0IHsgcmV0dXJuICBtX3RleHR1cmVJZDsgfQotICAgIGJvb2wgcHJlbXVsdGlwbGllZEFs
cGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9Ci0gICAgRmxvYXRS
ZWN0IHV2UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9Ci0gICAgYm9vbCBmbGlwcGVk
KCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVkOyB9Ci0KLSAgICB2b2lkIHNldE5lZWRzQmxlbmRp
bmcoKTsKLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIHByZW11
bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7Ci0g
ICAgCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX3ByZW11bHRpcGxpZWRB
bHBoYTsKLSAgICBGbG9hdFJlY3QgbV91dlJlY3Q7Ci0gICAgYm9vbCBtX2ZsaXBwZWQ7Ci19Owot
Cit0eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIENDVGV4dHVyZURyYXdR
dWFkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZi
MDM5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRl
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBi
b29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJv
dHRvbUVkZ2VBQSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1cmVJZCwgdGV4dHVyZU9m
ZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVk
Z2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7Ci19Ci0KLUNDVGls
ZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJl
T2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVy
LCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwg
Ym9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCi0gICAgOiBDQ0RyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBxdWFkUmVjdCkKLSAgICAs
IG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJlT2Zm
c2V0KQotICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKLSAgICAsIG1fdGV4dHVyZUZp
bHRlcih0ZXh0dXJlRmlsdGVyKQotICAgICwgbV9zd2l6emxlQ29udGVudHMoc3dpenpsZUNvbnRl
bnRzKQotICAgICwgbV9sZWZ0RWRnZUFBKGxlZnRFZGdlQUEpCi0gICAgLCBtX3RvcEVkZ2VBQSh0
b3BFZGdlQUEpCi0gICAgLCBtX3JpZ2h0RWRnZUFBKHJpZ2h0RWRnZUFBKQotICAgICwgbV9ib3R0
b21FZGdlQUEoYm90dG9tRWRnZUFBKQotewotICAgIGlmIChpc0FudGlhbGlhc2VkKCkpCi0gICAg
ICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci0gICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVj
dDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKaW5kZXggMzM1MDFhODA2Y2ZhZmY5
NjBmMjRjNmRkNmYxYzc4MjBhMTU3ODhjNS4uZDUzMGY0YTQ4ZjI5NDllYjNhY2IyOGE2M2MyYjc2
Y2FhN2E5NDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ0ICsyNiwxMCBAQAogI2lm
bmRlZiBDQ1RpbGVEcmF3UXVhZF9oCiAjZGVmaW5lIENDVGlsZURyYXdRdWFkX2gKIAotI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGls
ZVF1YWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1RpbGVEcmF3UXVhZCA6
IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3
UXVhZCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29u
c3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBH
QzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdl
QUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7
Ci0KLSAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUlkOyB9Ci0gICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZU9mZnNldDsgfQotICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVTaXplOyB9Ci0gICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9Ci0gICAgYm9vbCBzd2l6emxlQ29udGVudHMoKSBjb25z
dCB7IHJldHVybiBtX3N3aXp6bGVDb250ZW50czsgfQotCi0gICAgYm9vbCBsZWZ0RWRnZUFBKCkg
Y29uc3QgeyByZXR1cm4gbV9sZWZ0RWRnZUFBOyB9Ci0gICAgYm9vbCB0b3BFZGdlQUEoKSBjb25z
dCB7IHJldHVybiBtX3RvcEVkZ2VBQTsgfQotICAgIGJvb2wgcmlnaHRFZGdlQUEoKSBjb25zdCB7
IHJldHVybiBtX3JpZ2h0RWRnZUFBOyB9Ci0gICAgYm9vbCBib3R0b21FZGdlQUEoKSBjb25zdCB7
IHJldHVybiBtX2JvdHRvbUVkZ2VBQTsgfQotCi0gICAgYm9vbCBpc0FudGlhbGlhc2VkKCkgY29u
c3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VBQSgpIHx8IHJpZ2h0RWRnZUFBKCkg
fHwgYm90dG9tRWRnZUFBKCk7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1RpbGVEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9p
bnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRl
eHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wg
dG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7Ci0KLSAgICBQ
bGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOwotICAgIEludFBvaW50IG1fdGV4dHVyZU9mZnNl
dDsKLSAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7Ci0gICAgR0MzRGludCBtX3RleHR1cmVGaWx0
ZXI7Ci0gICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsKLSAgICBib29sIG1fbGVmdEVkZ2VBQTsK
LSAgICBib29sIG1fdG9wRWRnZUFBOwotICAgIGJvb2wgbV9yaWdodEVkZ2VBQTsKLSAgICBib29s
IG1fYm90dG9tRWRnZUFBOwotfTsKLQordHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUaWxl
UXVhZCBDQ1RpbGVEcmF3UXVhZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmgKaW5kZXggYjJlMDg4ZmNmNzEzNDAyZmQ0MmU1YTRjZTNjMjY5NzhlMDU1NTExNC4uY2Q1
ZGIwOWJjZDA1NmQ5MDNiNWY1YzdiZDMyMzgwM2Q4M2Y1N2MyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcAppbmRleCBhMmQ2MmJh
NDRjODY1NzY2ZjlhYTI5OTUwZTQ4YTUyYWQyNjFlYjQ3Li40M2YyZTJmNmY1NzhlOGQ0OGU4NjYx
OTkwYWFiNzdhMzc4NjEzNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5j
cHAKQEAgLTI3LDE5ICsyNywyNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFk
LmgiCiAKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3UXVh
ZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5
UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQorUGFzc093blB0cjxDQ1lVVlZp
ZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDWVVWVmlkZW9EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB5UGxhbmUsIHVQ
bGFuZSwgdlBsYW5lKSk7CiB9CiAKLUNDWVVWVmlkZW9EcmF3UXVhZDo6Q0NZVVZWaWRlb0RyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUs
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIENDRHJhd1F1YWQ6OllVVlZpZGVvQ29udGVudCwgcXVhZFJlY3QpCitDQ1lVVlZp
ZGVvRHJhd1F1YWQ6OkNDWVVWVmlkZW9EcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB2UGxhbmUpCisgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFk
U3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpZVVZWaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQogICAg
ICwgbV95UGxhbmUoeVBsYW5lKQogICAgICwgbV91UGxhbmUodVBsYW5lKQogICAgICwgbV92UGxh
bmUodlBsYW5lKQogewogfQogCitjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIENDWVVWVmlkZW9E
cmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1
YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6
OllVVlZpZGVvQ29udGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDWVVWVmlk
ZW9EcmF3UXVhZCo+KHF1YWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVh
ZC5oCmluZGV4IDBjZDc1OGM1YjBmMDAzZDY0NjVkYjkzMzZjYjk3ZWY1YjFmMjQzY2YuLjY2ODRh
ZDg5Nzg0MTUwN2FiMzFiZmMzM2EwNWRiMTg2YmVkMDBkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVW
VmlkZW9EcmF3UXVhZC5oCkBAIC0yNiwyMyArMjYsMjQgQEAKICNpZm5kZWYgQ0NZVVZWaWRlb0Ry
YXdRdWFkX2gKICNkZWZpbmUgQ0NZVVZWaWRlb0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0ND
RHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQgOiBwdWJs
aWMgQ0NEcmF3UXVhZCB7CitjbGFzcyBDQ1lVVlZpZGVvRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NZVVZWaWRl
b0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1lVVlZpZGVvRHJh
d1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJh
bWVQbGFuZSYgdlBsYW5lKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1
YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5l
LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlk
ZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSk7CiAKICAgICBjb25zdCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUoKSBjb25zdCB7IHJldHVybiBtX3lQbGFuZTsgfQog
ICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdVBsYW5lOyB9CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgdlBsYW5lKCkgY29uc3QgeyByZXR1cm4gbV92UGxhbmU7IH0KIAorICAgIHN0YXRpYyBjb25z
dCBDQ1lVVlZpZGVvRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDWVVWVmlkZW9EcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpG
cmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQ
bGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKTsKKyAgICBD
Q1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25z
dCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgQ0NWaWRlb0xh
eWVySW1wbDo6RnJhbWVQbGFuZSBtX3lQbGFuZTsKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lIG1fdVBsYW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCBiMzU4MTk3NTlkNDE0MjQ5N2Q4Mjg1MjkwM2Q2MGU2
NTUyMDBhNDUxLi42Y2M0ZDJjMzljYWNhMDI0MTlkYTQzYTU4NTFkZDZiNjliN2RjYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUZXN0Q29tbW9uLmNw
cApAQCAtNDMsMTAgKzQzLDExIEBAIHZvaWQgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGNv
bnN0IENDUXVhZExpc3QmIHF1YWRzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAgICBDQ0RyYXdRdWFk
KiBxdWFkID0gcXVhZHNbaV0uZ2V0KCk7CisgICAgICAgIEludFJlY3QgcXVhZFJlY3QgPSBxdWFk
LT5xdWFkUmVjdCgpOwogCi0gICAgICAgIEVYUEVDVF9UUlVFKHJlY3QuY29udGFpbnMocXVhZC0+
cXVhZFJlY3QoKSkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVt
YWluaW5nLmNvbnRhaW5zKHF1YWQtPnF1YWRSZWN0KCkpKSA8PCBxdWFkU3RyaW5nIDw8IGk7Ci0g
ICAgICAgIHJlbWFpbmluZy5zdWJ0cmFjdChSZWdpb24ocXVhZC0+cXVhZFJlY3QoKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShyZWN0LmNvbnRhaW5zKHF1YWRSZWN0KSkgPDwgcXVhZFN0cmluZyA8
PCBpOworICAgICAgICBFWFBFQ1RfVFJVRShyZW1haW5pbmcuY29udGFpbnMocXVhZFJlY3QpKSA8
PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgICAgIHJlbWFpbmluZy5zdWJ0cmFjdChSZWdpb24ocXVh
ZFJlY3QpKTsKICAgICB9CiAKICAgICBFWFBFQ1RfVFJVRShyZW1haW5pbmcuaXNFbXB0eSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNl
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRl
c3QuY3BwCmluZGV4IDE4Yjg1ZGRmYmY5MWQ1Zjk2Njg5OGZkNGVlZjQyMTIzNzE3OGM1MjQuLmU5
ZTA0MTc0OWMzNmIyYTE2NWRlNTk0NGFlNWNkMDI1ZDNhYzRhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtMTE0
LDEyICsxMTQsMTIgQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZh
Y2VDcmVhdGVzQ29ycmVjdFNoYXJlZFF1YWRTdGF0ZSkKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gcmVuZGVyU3VyZmFjZS0+Y3JlYXRlU2hhcmVkUXVh
ZFN0YXRlKCk7CiAKLSAgICBFWFBFQ1RfRVEoMzAsIHNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5z
Zm9ybSgpLm00MSgpKTsKLSAgICBFWFBFQ1RfRVEoNDAsIHNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRy
YW5zZm9ybSgpLm00MigpKTsKLSAgICBFWFBFQ1RfRVEoY29udGVudFJlY3QsIHNoYXJlZFF1YWRT
dGF0ZS0+dmlzaWJsZUNvbnRlbnRSZWN0KCkpOwotICAgIEVYUEVDVF9FUShjbGlwUmVjdCwgc2hh
cmVkUXVhZFN0YXRlLT5zY2lzc29yUmVjdCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgc2hhcmVkUXVh
ZFN0YXRlLT5vcGFjaXR5KCkpOwotICAgIEVYUEVDVF9GQUxTRShzaGFyZWRRdWFkU3RhdGUtPmlz
T3BhcXVlKCkpOworICAgIEVYUEVDVF9FUSgzMCwgc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNm
b3JtLm00MSgpKTsKKyAgICBFWFBFQ1RfRVEoNDAsIHNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5z
Zm9ybS5tNDIoKSk7CisgICAgRVhQRUNUX0VRKGNvbnRlbnRSZWN0LCBJbnRSZWN0KHNoYXJlZFF1
YWRTdGF0ZS0+dmlzaWJsZUNvbnRlbnRSZWN0KSk7CisgICAgRVhQRUNUX0VRKGNsaXBSZWN0LCBJ
bnRSZWN0KHNoYXJlZFF1YWRTdGF0ZS0+c2Npc3NvclJlY3QpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
c2hhcmVkUXVhZFN0YXRlLT5vcGFjaXR5KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2hhcmVkUXVhZFN0
YXRlLT5vcGFxdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKaW5k
ZXggY2I4OTczZjY4NDliMWQ0MGM3MTVjOGMxZjlhYWVjNGE4MGNjNmMzNi4uMWJmYzgxZDhjNWZl
NWZmMTk1MzhhMzE3MTY5MTMxYzI4NzE1ZGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVj
dEJhY2tncm91bmRDb2xvckluUXVhZCkKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogCiAgICAgQVNTRVJU
X0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDFVKTsKLSAgICBFWFBFQ1RfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpWzBdLT50b1NvbGlkQ29sb3JEcmF3UXVhZCgpLT5jb2xvcigpLCB0
ZXN0Q29sb3IpOworICAgIEVYUEVDVF9FUShDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS5nZXQoKSktPmNvbG9yKCksIHRlc3RDb2xvcik7
CiB9CiAKIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdE9wYWNp
dHlJblF1YWQpCkBAIC0xMDEsNyArMTAxLDcgQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxU
ZXN0LCB2ZXJpZnlDb3JyZWN0T3BhY2l0eUluUXVhZCkKICAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogCiAg
ICAgQVNTRVJUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDFVKTsKLSAgICBFWFBF
Q1RfRVEob3BhY2l0eSwgcXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLT50b1NvbGlkQ29sb3JEcmF3
UXVhZCgpLT5vcGFjaXR5KCkpOworICAgIEVYUEVDVF9FUShvcGFjaXR5LCBDQ1NvbGlkQ29sb3JE
cmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS5nZXQoKSktPm9w
YWNpdHkoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>